curl https://router.requesty.ai/v1/models/speech \
-H "Authorization: Bearer YOUR_REQUESTY_API_KEY"
import httpx
response = httpx.get(
"https://router.requesty.ai/v1/models/speech",
headers={"Authorization": "Bearer YOUR_REQUESTY_API_KEY"},
)
for model in response.json()["data"]:
print(model["id"])
const response = await fetch("https://router.requesty.ai/v1/models/speech", {
headers: { Authorization: `Bearer ${process.env.REQUESTY_API_KEY}` },
});
const { data } = await response.json();
for (const model of data) {
console.log(model.id);
}
{
"object": "list",
"data": [
{
"api": "speech",
"id": "openai/gpt-audio-mini",
"object": "model",
"created": 1776935721,
"updated": 1776935721,
"owned_by": "system",
"pricing": {
"input_token": 6e-07,
"output_token": 2.4e-06
},
"data_retention": true,
"data_retention_days": 30,
"data_used_for_training": false,
"privacy_comments": "",
"geolocation": "global"
},
{
"api": "speech",
"id": "openai/tts-1",
"object": "model",
"created": 1767023142,
"updated": 1767023142,
"owned_by": "system",
"pricing": {
"input_character": 1.5e-05
},
"data_retention": true,
"data_retention_days": 30,
"data_used_for_training": false,
"privacy_comments": "",
"geolocation": "global"
}
]
}
List Speech Models
Get all available speech models. If authenticated with a Requesty API key, returns only the models approved for your organization. Otherwise, returns all public models. Aliases and routing policies are chat-only and are never returned here.
GET
/
v1
/
models
/
speech
curl https://router.requesty.ai/v1/models/speech \
-H "Authorization: Bearer YOUR_REQUESTY_API_KEY"
import httpx
response = httpx.get(
"https://router.requesty.ai/v1/models/speech",
headers={"Authorization": "Bearer YOUR_REQUESTY_API_KEY"},
)
for model in response.json()["data"]:
print(model["id"])
const response = await fetch("https://router.requesty.ai/v1/models/speech", {
headers: { Authorization: `Bearer ${process.env.REQUESTY_API_KEY}` },
});
const { data } = await response.json();
for (const model of data) {
console.log(model.id);
}
{
"object": "list",
"data": [
{
"api": "speech",
"id": "openai/gpt-audio-mini",
"object": "model",
"created": 1776935721,
"updated": 1776935721,
"owned_by": "system",
"pricing": {
"input_token": 6e-07,
"output_token": 2.4e-06
},
"data_retention": true,
"data_retention_days": 30,
"data_used_for_training": false,
"privacy_comments": "",
"geolocation": "global"
},
{
"api": "speech",
"id": "openai/tts-1",
"object": "model",
"created": 1767023142,
"updated": 1767023142,
"owned_by": "system",
"pricing": {
"input_character": 1.5e-05
},
"data_retention": true,
"data_retention_days": 30,
"data_used_for_training": false,
"privacy_comments": "",
"geolocation": "global"
}
]
}
curl https://router.requesty.ai/v1/models/speech \
-H "Authorization: Bearer YOUR_REQUESTY_API_KEY"
import httpx
response = httpx.get(
"https://router.requesty.ai/v1/models/speech",
headers={"Authorization": "Bearer YOUR_REQUESTY_API_KEY"},
)
for model in response.json()["data"]:
print(model["id"])
const response = await fetch("https://router.requesty.ai/v1/models/speech", {
headers: { Authorization: `Bearer ${process.env.REQUESTY_API_KEY}` },
});
const { data } = await response.json();
for (const model of data) {
console.log(model.id);
}
{
"object": "list",
"data": [
{
"api": "speech",
"id": "openai/gpt-audio-mini",
"object": "model",
"created": 1776935721,
"updated": 1776935721,
"owned_by": "system",
"pricing": {
"input_token": 6e-07,
"output_token": 2.4e-06
},
"data_retention": true,
"data_retention_days": 30,
"data_used_for_training": false,
"privacy_comments": "",
"geolocation": "global"
},
{
"api": "speech",
"id": "openai/tts-1",
"object": "model",
"created": 1767023142,
"updated": 1767023142,
"owned_by": "system",
"pricing": {
"input_character": 1.5e-05
},
"data_retention": true,
"data_retention_days": 30,
"data_used_for_training": false,
"privacy_comments": "",
"geolocation": "global"
}
]
}
/v1/audio/speech endpoint.
Aliases and routing policies exist for chat only, so they never appear here.
Pricing is per input character (input_character) or per token (input_token and output_token), depending on the model.
Authentication
Authentication is optional. The API key can be sent as eitherAuthorization: Bearer YOUR_REQUESTY_API_KEY or X-Api-Key: YOUR_REQUESTY_API_KEY; both headers behave identically.
| Request | Status | Result |
|---|---|---|
No Authorization or X-Api-Key header | 200 | All publicly available models |
| Valid API key | 200 | Only the models approved for your organization and allowed by the key’s access list |
| Invalid, expired or revoked API key | 403 | Invalid authorization token — the request is rejected, not treated as anonymous |
Last modified on September 10, 2026
Was this page helpful?