Verbinden met de NowMetrix REST API
Maak een API-sleutel aan, stuur deze veilig mee met elk verzoek en controleer de verbinding met een korte respons met accountcontext voordat u analyticsgegevens opvraagt.
1. Een API-sleutel aanmaken en beveiligen
Meld u aan bij NowMetrix, open Instellingen → API en maak voor de integratie een API-sleutel met een herkenbare naam, bijvoorbeeld Intern dashboard of Google Sheets. U kunt maximaal 10 actieve sleutels bewaren. Kopieer een nieuwe of geroteerde sleutel direct: de volledige waarde wordt maar één keer weergegeven.
NOWMETRIX_API_KEY=nm_YOUR_KEY
Als u de naam van een sleutel wijzigt, verandert de waarde niet. Het roteren of intrekken van één sleutel heeft alleen gevolgen voor die sleutel. Alle sleutels gebruiken de rechten van de bijbehorende NowMetrix-gebruiker en delen per tracker dezelfde rate limit.
2. De sleutel met elk verzoek meesturen
De REST API is stateless: er is geen afzonderlijk aanmeldingsverzoek of permanente sessie. Stuur de API-sleutel bij elk HTTPS-verzoek mee als Bearer-token.
GET https://api.nowmetrix.com/api/me
Authorization: Bearer nm_YOUR_KEY
Accept: application/json
- Basis-URL:
https://api.nowmetrix.com - Authenticatie:
Authorization: Bearer nm_YOUR_KEY - Verbinding testen: voor
GET /api/meis geen trackerparameter vereist. - Time-outs: stel in elke client een eindige verbindings- en responstime-out in.
3. De verbinding met cURL controleren
Gebruik cURL om vanuit een terminal snel te controleren of de verbinding werkt.
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"
Een geslaagd verzoek geeft HTTP 200 en de trackers terug die voor de API-sleutel beschikbaar zijn:
{
"authenticated": true,
"current_tracker": "TRACKER_ID",
"trackers": [
{
"tracker": "TRACKER_ID",
"host": "example-media.test"
},
{
"tracker": "SECOND_TRACKER_ID",
"host": "example-studio.test"
}
]
}
PHP 8+
Gebruik de cURL-extensie van PHP en bewaar de API-sleutel in een omgevingsvariabele.
<?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+)
Gebruik de ingebouwde fetch-API op de server. Stel de API-sleutel niet bloot in JavaScript in de 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
Het requests-package biedt een beknopte client met expliciete afhandeling van time-outs en statussen. Installeer het met 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+
De standaard HttpClient van Java volstaat voor het geauthenticeerde verzoek.
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+)
Gebruik HttpClient met een Bearer-autorisatieheader en een time-out op applicatieniveau.
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+
Gebruik de standaardclient van net/http en decodeer de JSON-respons naar een generieke structuur of uw eigen types.
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+
De standaardbibliotheek van Ruby kan het verzoek uitvoeren zonder extra HTTP-package.
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))
Authenticatie- en transportfouten afhandelen
Controleer de HTTP-status voordat u een succesvolle payload decodeert. Foutresponsen gebruiken een stabiele JSON-structuur met een machineleesbare error.code.
401 missing_token: de Authorization-header ontbreekt.401 invalid_token: de sleutel is ongeldig, ingetrokken of vervangen.403 site_not_authorized: de sleutel heeft geen toegang tot de opgevraagde tracker.429 rate_limit_exceeded: wacht hetRetry-After-interval af voordat u het opnieuw probeert.503: probeer tijdelijke backendfouten opnieuw met begrensde exponentiële back-off.
{
"error": {
"code": "invalid_token",
"message": "Bearer token is invalid or revoked."
}
}
Een tracker-specifiek endpoint gebruiken
Lees de waarde van current_tracker of trackers[].tracker uit /api/me en geef die tracker-ID vervolgens door als queryparameter site.
GET https://api.nowmetrix.com/v1/realtime?site=TRACKER_ID
Authorization: Bearer nm_YOUR_KEY
Accept: application/json