Quickstart

Fetch an OG Score in five minutes. Five languages, one call, one key.

1. Get your API key

Submit a request through our contact form with your use case. You'll receive a sk_live_... key once — store it securely, it won't be shown again.

2. Fetch a coin score

Replace sk_live_... with your key and pick a language:

curl -H "X-API-Key: sk_live_..." \
  https://api.ogaudit.com/api/v1/projects/bitcoin-btc/score
const res = await fetch(
    'https://api.ogaudit.com/api/v1/projects/bitcoin-btc/score',
    { headers: { 'X-API-Key': 'sk_live_...' } }
);
const { data, meta } = await res.json();
console.log(data.og_score, data.band);  // 72.01, 'B'
import requests

res = requests.get(
    'https://api.ogaudit.com/api/v1/projects/bitcoin-btc/score',
    headers={'X-API-Key': 'sk_live_...'},
)
data = res.json()['data']
print(data['og_score'], data['band'])  # 72.01 B
<?php
$client = new \GuzzleHttp\Client();
$res = $client->get('https://api.ogaudit.com/api/v1/projects/bitcoin-btc/score', [
    'headers' => ['X-API-Key' => 'sk_live_...'],
]);
$data = json_decode($res->getBody(), true)['data'];
echo $data['og_score'] . ' ' . $data['band']; // 72.01 B
req, _ := http.NewRequest("GET",
    "https://api.ogaudit.com/api/v1/projects/bitcoin-btc/score", nil)
req.Header.Set("X-API-Key", "sk_live_...")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()

var body struct {
    Data struct {
        OgScore float64 `json:"og_score"`
        Band    string  `json:"band"`
    } `json:"data"`
}
json.NewDecoder(res.Body).Decode(&body)
fmt.Println(body.Data.OgScore, body.Data.Band) // 72.01 B

3. Fetch an exchange score

Same auth, different path:

curl -H "X-API-Key: sk_live_..." \
  https://api.ogaudit.com/api/v1/exchanges/binance/score
const res = await fetch(
    'https://api.ogaudit.com/api/v1/exchanges/binance/score',
    { headers: { 'X-API-Key': 'sk_live_...' } }
);
const { data } = await res.json();
console.log(data.og_score, data.band);
res = requests.get(
    'https://api.ogaudit.com/api/v1/exchanges/binance/score',
    headers={'X-API-Key': 'sk_live_...'},
)
print(res.json()['data']['og_score'])
$res = $client->get('https://api.ogaudit.com/api/v1/exchanges/binance/score', [
    'headers' => ['X-API-Key' => 'sk_live_...'],
]);
$data = json_decode($res->getBody(), true)['data'];
req, _ := http.NewRequest("GET",
    "https://api.ogaudit.com/api/v1/exchanges/binance/score", nil)
req.Header.Set("X-API-Key", "sk_live_...")
res, _ := http.DefaultClient.Do(req)

4. Handle errors

All error responses share the same shape. Inspect error.code for programmatic handling:

  • 401 MISSING_KEY / INVALID_KEY / REVOKED_KEY — regenerate via our contact form
  • 403 IP_NOT_ALLOWED — your IP is not in the key's allowlist
  • 404 COIN_NOT_FOUND / EXCHANGE_NOT_FOUND — check slug or flags.is_gone
  • 429 RATE_LIMIT_EXCEEDED / QUOTA_EXCEEDED — wait Retry-After seconds
  • 503 API_DISABLED — service paused; retry later

5. Key response fields

Full schema on the API Reference. Most-used fields:

  • data.og_score — 0–100 (float)
  • data.band — A/B/C/D/F
  • data.confidence — high/medium/low (based on review count)
  • data.og_score_rank / og_score_rank_total — e.g. 1/949
  • data.market — price, market cap, 24h volume, ATH/ATL
  • data.sentiment — community bullish/bearish percentages
  • data.flags — is_verified, is_listed, is_gone, status
  • meta.cache_ttl_remaining_seconds — cache freshness

Next steps