Authentication
A key looks like this: sat_live_ followed by 32 characters. You send it with every call. Cookies are not read on this domain.
How to send the key
Two forms, your choice. The first is the recommended one.
curl https://api.satelit.md/v1/me \
-H "Authorization: Bearer $SATELIT_KEY"
# or
curl https://api.satelit.md/v1/me \
-H "X-Api-Key: $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/me", {
headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits); import json, os, urllib.request
req = urllib.request.Request(
"https://api.satelit.md/v1/me",
headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
body = json.load(res)
print(body["data"], body["meta"]["credits"]) <?php
$ch = curl_init("https://api.satelit.md/v1/me");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]); How to keep the key
- You see it only once, when you create it. We keep only its fingerprint (sha256) and the first 12 characters, so you can recognize it in the dashboard.
- Keep it in an environment variable on the server. Do not put it in the code of a public page and do not commit it to git.
- If it leaks: create a new one and revoke the old one in the dashboard. Revocation is immediate.
How many keys each plan has
| Start | 1 |
|---|---|
| Creator | 3 |
| Pro | 10 |
| Business | 50 |
| Enterprise | by contract |
Routes without a key
/v1/sample, /v1/products, /v1/plans and /v1/status work without a key. /v1/sample has a limit of 60 calls per minute, per IP.
When the key is not valid
No key: 401 auth_required. Unknown or revoked key: 401 key_invalid. After 30 wrong attempts in a minute from the same IP, the response becomes 429.
Check the key
GET /v1/me costs no credits and shows the plan, the remaining credits and the per-minute limit.
{
"data": {
"plan": "creator",
"credits": {
"limit": 30000,
"used": 4210,
"reset": "2026-12-01T00:00:00+02:00",
"plan": 30000,
"extra": 0
},
"rate": {
"per_minute": 120
},
"key": {
"name": "blog",
"prefix": "sat_live_a1b"
}
},
"meta": {
"credits": 0
}
}