Hubungkan ke REST API NowMetrix
Buat API key, kirimkan dengan aman di setiap permintaan, lalu verifikasi koneksi dengan respons konteks akun sederhana sebelum meminta data analitik.
1. Buat dan lindungi API key
Masuk ke NowMetrix, buka Pengaturan → API, lalu buat API key berlabel untuk integrasi, misalnya Dasbor internal atau Google Sheets. Anda dapat menyimpan hingga 10 key aktif. Segera salin key baru atau key yang baru dirotasi karena nilainya secara lengkap hanya ditampilkan sekali.
NOWMETRIX_API_KEY=nm_YOUR_KEY
Mengganti nama key tidak mengubah nilainya. Merotasi atau mencabut satu key hanya memengaruhi key yang dipilih. Semua key menggunakan izin pengguna NowMetrix masing-masing dan berbagi batas laju setiap tracker.
2. Kirim key di setiap permintaan
REST API bersifat stateless: tidak ada permintaan login terpisah atau sesi persisten. Kirim API key sebagai token Bearer pada setiap permintaan HTTPS.
GET https://api.nowmetrix.com/api/me
Authorization: Bearer nm_YOUR_KEY
Accept: application/json
- URL dasar:
https://api.nowmetrix.com - Autentikasi:
Authorization: Bearer nm_YOUR_KEY - Uji koneksi:
GET /api/metidak memerlukan parameter tracker. - Batas waktu: tetapkan batas waktu koneksi dan respons yang pasti di setiap klien.
3. Verifikasi koneksi dengan cURL
Gunakan cURL untuk memeriksa koneksi dengan cepat dari terminal.
API_KEY="nm_YOUR_KEY"
curl --fail-with-body --silent --show-error \
--header "Authorization: Bearer ${API_KEY}" \
--header "Accept: application/json" \
"https://api.nowmetrix.com/api/me"
Permintaan yang berhasil mengembalikan HTTP 200 dan tracker yang tersedia untuk API key:
{
"authenticated": true,
"current_tracker": "TRACKER_ID",
"trackers": [
{
"tracker": "TRACKER_ID",
"host": "example-media.test"
},
{
"tracker": "SECOND_TRACKER_ID",
"host": "example-studio.test"
}
]
}
PHP 8+
Gunakan ekstensi cURL PHP dan simpan API key dalam variabel lingkungan.
<?php
$apiKey = getenv('NOWMETRIX_API_KEY');
if (!is_string($apiKey) || $apiKey === '') {
throw new RuntimeException('NOWMETRIX_API_KEY is not set.');
}
$curl = curl_init('https://api.nowmetrix.com/api/me');
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Accept: application/json',
],
CURLOPT_TIMEOUT => 10,
]);
$body = curl_exec($curl);
if ($body === false) {
$error = curl_error($curl);
curl_close($curl);
throw new RuntimeException($error);
}
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
if ($status < 200 || $status >= 300) {
throw new RuntimeException("NowMetrix API returned HTTP {$status}: {$body}");
}
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($data);
JavaScript (Node.js 18+)
Gunakan fetch API bawaan di server. Jangan mengekspos API key dalam JavaScript sisi browser.
const apiKey = process.env.NOWMETRIX_API_KEY;
if (!apiKey) throw new Error('NOWMETRIX_API_KEY is not set.');
async function main() {
const response = await fetch('https://api.nowmetrix.com/api/me', {
headers: {
Authorization: `Bearer ${apiKey}`,
Accept: 'application/json',
},
signal: AbortSignal.timeout(10_000),
});
const body = await response.text();
if (!response.ok) {
throw new Error(`NowMetrix API returned HTTP ${response.status}: ${body}`);
}
console.log(JSON.parse(body));
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
Python 3
Paket requests menyediakan klien ringkas dengan penanganan batas waktu dan status yang eksplisit. Instal dengan python -m pip install requests.
import os
import requests
api_key = os.environ["NOWMETRIX_API_KEY"]
response = requests.get(
"https://api.nowmetrix.com/api/me",
headers={
"Authorization": f"Bearer {api_key}",
"Accept": "application/json",
},
timeout=10,
)
response.raise_for_status()
print(response.json())
Java 11+
HttpClient standar Java sudah memadai untuk permintaan terautentikasi.
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class NowMetrixExample {
public static void main(String[] args) throws Exception {
String apiKey = System.getenv("NOWMETRIX_API_KEY");
if (apiKey == null || apiKey.isBlank()) {
throw new IllegalStateException("NOWMETRIX_API_KEY is not set.");
}
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.nowmetrix.com/api/me"))
.timeout(Duration.ofSeconds(10))
.header("Authorization", "Bearer " + apiKey)
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString()
);
if (response.statusCode() < 200 || response.statusCode() >= 300) {
throw new IllegalStateException(
"NowMetrix API returned HTTP " + response.statusCode() + ": " + response.body()
);
}
System.out.println(response.body());
}
}
C# (.NET 6+)
Gunakan HttpClient dengan header otorisasi Bearer dan batas waktu tingkat aplikasi.
using System.Net.Http.Headers;
var apiKey = Environment.GetEnvironmentVariable("NOWMETRIX_API_KEY")
?? throw new InvalidOperationException("NOWMETRIX_API_KEY is not set.");
using var client = new HttpClient
{
BaseAddress = new Uri("https://api.nowmetrix.com"),
Timeout = TimeSpan.FromSeconds(10),
};
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", apiKey);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json")
);
using var response = await client.GetAsync("/api/me");
var body = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
{
throw new HttpRequestException(
$"NowMetrix API returned HTTP {(int)response.StatusCode}: {body}"
);
}
Console.WriteLine(body);
Go 1.20+
Gunakan klien net/http standar dan dekode respons JSON ke dalam struktur generik atau tipe Anda sendiri.
package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
"time"
)
func main() {
apiKey := os.Getenv("NOWMETRIX_API_KEY")
if apiKey == "" {
panic("NOWMETRIX_API_KEY is not set")
}
request, err := http.NewRequest(http.MethodGet, "https://api.nowmetrix.com/api/me", nil)
if err != nil {
panic(err)
}
request.Header.Set("Authorization", "Bearer "+apiKey)
request.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 10 * time.Second}
response, err := client.Do(request)
if err != nil {
panic(err)
}
defer response.Body.Close()
if response.StatusCode < 200 || response.StatusCode >= 300 {
panic("NowMetrix API returned " + response.Status)
}
var data map[string]any
if err := json.NewDecoder(response.Body).Decode(&data); err != nil {
panic(err)
}
fmt.Printf("%#v\n", data)
}
Ruby 3+
Pustaka standar Ruby dapat membuat permintaan tanpa paket HTTP tambahan.
require 'json'
require 'net/http'
api_key = ENV.fetch('NOWMETRIX_API_KEY')
uri = URI('https://api.nowmetrix.com/api/me')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = "Bearer #{api_key}"
request['Accept'] = 'application/json'
response = Net::HTTP.start(
uri.hostname,
uri.port,
use_ssl: true,
open_timeout: 10,
read_timeout: 10
) { |http| http.request(request) }
unless response.is_a?(Net::HTTPSuccess)
raise "NowMetrix API returned HTTP #{response.code}: #{response.body}"
end
puts JSON.pretty_generate(JSON.parse(response.body))
Tangani kesalahan autentikasi dan transportasi
Periksa status HTTP sebelum mendekode payload yang berhasil. Respons kesalahan menggunakan struktur JSON yang konsisten dengan error.code yang dapat dibaca mesin.
401 missing_token: header Authorization tidak ada.401 invalid_token: key tidak valid, telah dicabut, atau telah diganti.403 site_not_authorized: key tidak dapat mengakses tracker yang diminta.429 rate_limit_exceeded: tunggu intervalRetry-Aftersebelum mencoba lagi.503: coba lagi kegagalan backend sementara dengan exponential backoff yang dibatasi.
{
"error": {
"code": "invalid_token",
"message": "Bearer token is invalid or revoked."
}
}
Gunakan endpoint khusus tracker
Baca nilai current_tracker atau trackers[].tracker dari /api/me, lalu teruskan ID tracker tersebut sebagai parameter kueri site.
GET https://api.nowmetrix.com/v1/realtime?site=TRACKER_ID
Authorization: Bearer nm_YOUR_KEY
Accept: application/json