curl --request GET \
--url https://api.trymorse.ai/v1/models/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.trymorse.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.trymorse.ai/v1/models/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "moonshotai/kimi-k3",
"object": "model",
"created": 0,
"owned_by": "morse",
"type": "chat",
"label": "Kimi K3",
"input_modalities": [
"text",
"image"
],
"reasoning_efforts": [
"none",
"low",
"high",
"max"
],
"tiers": [
{
"tier": "private",
"retention": "zdr",
"quantizations": [
"mxfp4",
"fp8"
],
"context_tokens": 1048576,
"max_output_tokens": 1048576,
"compact_at_tokens": 838860,
"default_reasoning_effort": "high",
"plan": "pro",
"price": {
"prompt_micros_per_mtok": 3000000,
"completion_micros_per_mtok": 15000000,
"min_hold_micros": 15360
}
},
{
"tier": "e2ee",
"retention": "vendor",
"attesters": [
{
"name": "phala",
"sealed_model": "moonshotai/kimi-k3"
}
],
"quantizations": [
"unknown"
],
"context_tokens": 1048576,
"max_output_tokens": 1048576,
"compact_at_tokens": 838860,
"plan": "pro",
"price": {
"prompt_micros_per_mtok": 3000000,
"completion_micros_per_mtok": 15000000
}
}
]
}{
"error": {
"message": "Incorrect API key provided.",
"type": "invalid_request_error",
"param": null,
"code": "invalid_api_key"
}
}{
"error": {
"message": "This account has been disabled. Contact support.",
"type": "invalid_request_error",
"param": null,
"code": "account_disabled"
}
}{
"error": {
"message": "The requested model does not exist.",
"type": "invalid_request_error",
"param": null,
"code": "model_not_found"
}
}{
"error": {
"message": "Rate limit reached for this account. Retry after the time in the Retry-After header.",
"type": "requests",
"param": null,
"code": "rate_limit_exceeded"
}
}{
"error": {
"message": "The service is temporarily unable to authorize requests. Try again shortly.",
"type": "server_error",
"param": null,
"code": "service_unavailable"
}
}Retrieve a model
Retrieves one model, as OpenAI’s model retrieve does, with the entry GET /v1/models lists for it to this caller. A model id, such as z-ai/glm-5.3, which holds a slash, answers its entry with its tiers; an alias, such as glm-5.3, answers its entry at its tier. The call is free, needs no balance, and shares the account’s 60 model lists a minute.
curl --request GET \
--url https://api.trymorse.ai/v1/models/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.trymorse.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.trymorse.ai/v1/models/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "moonshotai/kimi-k3",
"object": "model",
"created": 0,
"owned_by": "morse",
"type": "chat",
"label": "Kimi K3",
"input_modalities": [
"text",
"image"
],
"reasoning_efforts": [
"none",
"low",
"high",
"max"
],
"tiers": [
{
"tier": "private",
"retention": "zdr",
"quantizations": [
"mxfp4",
"fp8"
],
"context_tokens": 1048576,
"max_output_tokens": 1048576,
"compact_at_tokens": 838860,
"default_reasoning_effort": "high",
"plan": "pro",
"price": {
"prompt_micros_per_mtok": 3000000,
"completion_micros_per_mtok": 15000000,
"min_hold_micros": 15360
}
},
{
"tier": "e2ee",
"retention": "vendor",
"attesters": [
{
"name": "phala",
"sealed_model": "moonshotai/kimi-k3"
}
],
"quantizations": [
"unknown"
],
"context_tokens": 1048576,
"max_output_tokens": 1048576,
"compact_at_tokens": 838860,
"plan": "pro",
"price": {
"prompt_micros_per_mtok": 3000000,
"completion_micros_per_mtok": 15000000
}
}
]
}{
"error": {
"message": "Incorrect API key provided.",
"type": "invalid_request_error",
"param": null,
"code": "invalid_api_key"
}
}{
"error": {
"message": "This account has been disabled. Contact support.",
"type": "invalid_request_error",
"param": null,
"code": "account_disabled"
}
}{
"error": {
"message": "The requested model does not exist.",
"type": "invalid_request_error",
"param": null,
"code": "model_not_found"
}
}{
"error": {
"message": "Rate limit reached for this account. Retry after the time in the Retry-After header.",
"type": "requests",
"param": null,
"code": "rate_limit_exceeded"
}
}{
"error": {
"message": "The service is temporarily unable to authorize requests. Try again shortly.",
"type": "server_error",
"param": null,
"code": "service_unavailable"
}
}Authorizations
Path Parameters
Response
The model, as GET /v1/models lists it to this caller: a model id's entry with its tiers, or an alias's entry at its tier.
- Option 1
- Option 2
A model, listed once. The fields at the top describe the weights. Each row of tiers is the model at one privacy tier, with the price and limits it is sold at there. A tier with no price is not listed. The plan and included fields describe the Morse app. They do not apply to API keys, which always pay with credits.
False on a chat model served without tools. An API key's request that lets it call a tool (tools, or a tool_choice that calls one, with a tool_choice other than none) is refused with 400 unsupported_parameter naming tools; any other request reaches the host with no tools, tool_choice, or parallel_tool_calls. Absent on every model that takes tools.
False on a chat model kept out of character chats. A chat that plays a character on it, one that sends X-Character or a character's prompt, is refused with 400 model_unsupported_for_characters before Morse calls the model or holds any credit. Absent on every model that takes character chats.