curl -X POST https://api.telzino.com/oauth/token \
-H "Content-Type: application/json" \
-d '{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"audience": "https://api.telzino.com/",
"grant_type": "client_credentials"
}'
const response = await fetch('https://api.telzino.com/oauth/token', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
client_id: 'YOUR_CLIENT_ID',
client_secret: 'YOUR_CLIENT_SECRET',
audience: 'https://api.telzino.com/',
grant_type: 'client_credentials'
})
});
const { access_token } = await response.json();
import requests
response = requests.post(
'https://api.telzino.com/oauth/token',
json={
'client_id': 'YOUR_CLIENT_ID',
'client_secret': 'YOUR_CLIENT_SECRET',
'audience': 'https://api.telzino.com/',
'grant_type': 'client_credentials'
}
)
access_token = response.json()['access_token']
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 86400
}
{
"error": "invalid_request",
"error_description": "Missing required parameter: client_id"
}
API Reference
Authentication
Obtain an access token using OAuth 2.0 Client Credentials
POST
/
oauth
/
token
curl -X POST https://api.telzino.com/oauth/token \
-H "Content-Type: application/json" \
-d '{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"audience": "https://api.telzino.com/",
"grant_type": "client_credentials"
}'
const response = await fetch('https://api.telzino.com/oauth/token', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
client_id: 'YOUR_CLIENT_ID',
client_secret: 'YOUR_CLIENT_SECRET',
audience: 'https://api.telzino.com/',
grant_type: 'client_credentials'
})
});
const { access_token } = await response.json();
import requests
response = requests.post(
'https://api.telzino.com/oauth/token',
json={
'client_id': 'YOUR_CLIENT_ID',
'client_secret': 'YOUR_CLIENT_SECRET',
'audience': 'https://api.telzino.com/',
'grant_type': 'client_credentials'
}
)
access_token = response.json()['access_token']
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 86400
}
{
"error": "invalid_request",
"error_description": "Missing required parameter: client_id"
}
Request Access Token
Accepts a JSON request body for the Client Credentials Grant and returns an access token.string
required
Your Auth0 client ID from the Telzino dashboard
string
required
Your Auth0 client secret
string
required
API audience. Use
https://api.telzino.com/string
required
Must be
client_credentialscurl -X POST https://api.telzino.com/oauth/token \
-H "Content-Type: application/json" \
-d '{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"audience": "https://api.telzino.com/",
"grant_type": "client_credentials"
}'
const response = await fetch('https://api.telzino.com/oauth/token', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
client_id: 'YOUR_CLIENT_ID',
client_secret: 'YOUR_CLIENT_SECRET',
audience: 'https://api.telzino.com/',
grant_type: 'client_credentials'
})
});
const { access_token } = await response.json();
import requests
response = requests.post(
'https://api.telzino.com/oauth/token',
json={
'client_id': 'YOUR_CLIENT_ID',
'client_secret': 'YOUR_CLIENT_SECRET',
'audience': 'https://api.telzino.com/',
'grant_type': 'client_credentials'
}
)
access_token = response.json()['access_token']
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 86400
}
{
"error": "invalid_request",
"error_description": "Missing required parameter: client_id"
}
Get Current Account
After obtaining an access token, you can retrieve the account ID associated with your credentials.curl https://api.telzino.com/v1/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"account_id": "m5b6g5jd-lanh-47yi-yhsg-cx56wjdah8h9"
}
Scoped API keys
An API key normally reaches the whole account. A Partner can instead issue a key limited to one reseller or one organization — choose it under Access when creating the key at Account Settings → API Keys. Every list and read the key makes is narrowed to that scope, and a request that names a reseller or organization outside it is refused with403 forbidden.
GET /v1/me reports a key’s scope. Some endpoints are closed to scoped keys altogether and answer 403 insufficient_scope: the billing report, session minting, the reseller and organization listings, and writes to account-level resources such as retry policies (which a scoped key can read but not change). Email servers are likewise read-only for a scoped key.
Reseller admins see the keys their partner issued for them on their own API Keys page, where they can rotate a key: rotation keeps the client ID and replaces the secret, and tokens minted before the rotation stop working.