NowMetrix REST API से कनेक्ट करें
API कुंजी बनाएँ, उसे हर अनुरोध के साथ सुरक्षित रूप से भेजें और एनालिटिक्स डेटा माँगने से पहले अकाउंट-संदर्भ वाले छोटे रिस्पॉन्स से कनेक्शन की पुष्टि करें।
1. API कुंजी बनाएँ और सुरक्षित रखें
NowMetrix में साइन इन करें, सेटिंग्स → API खोलें और इंटीग्रेशन के लिए नाम वाली API कुंजी बनाएँ, जैसे आंतरिक डैशबोर्ड या Google Sheets। आप अधिकतम 10 सक्रिय कुंजियाँ रख सकते हैं। नई या रोटेट की गई कुंजी तुरंत कॉपी करें: इसका पूरा मान केवल एक बार दिखाया जाता है।
NOWMETRIX_API_KEY=nm_YOUR_KEY
कुंजी का नाम बदलने से उसका मान नहीं बदलता। किसी एक कुंजी को रोटेट या रद्द करने से केवल वही चुनी हुई कुंजी प्रभावित होती है। सभी कुंजियाँ अपने NowMetrix उपयोगकर्ता की अनुमतियों का उपयोग करती हैं और प्रत्येक ट्रैकर की रेट लिमिट साझा करती हैं।
2. हर अनुरोध के साथ कुंजी भेजें
REST API स्टेटलेस है: इसमें अलग से लॉगिन अनुरोध या स्थायी सेशन नहीं होता। हर HTTPS अनुरोध में API कुंजी को Bearer टोकन के रूप में भेजें।
GET https://api.nowmetrix.com/api/me
Authorization: Bearer nm_YOUR_KEY
Accept: application/json
- बेस URL:
https://api.nowmetrix.com - प्रमाणीकरण:
Authorization: Bearer nm_YOUR_KEY - कनेक्शन टेस्ट:
GET /api/meके लिए ट्रैकर पैरामीटर आवश्यक नहीं है। - टाइमआउट: हर क्लाइंट में कनेक्शन और रिस्पॉन्स के लिए सीमित टाइमआउट सेट करें।
3. cURL से कनेक्शन की पुष्टि करें
टर्मिनल से सबसे तेज़ कनेक्शन जाँच करने के लिए cURL का उपयोग करें।
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"
सफल अनुरोध पर HTTP 200 और API कुंजी के लिए उपलब्ध ट्रैकर मिलते हैं:
{
"authenticated": true,
"current_tracker": "TRACKER_ID",
"trackers": [
{
"tracker": "TRACKER_ID",
"host": "example-media.test"
},
{
"tracker": "SECOND_TRACKER_ID",
"host": "example-studio.test"
}
]
}
PHP 8+
PHP के cURL एक्सटेंशन का उपयोग करें और API कुंजी को एनवायरनमेंट वेरिएबल में रखें।
<?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+)
सर्वर पर बिल्ट-इन fetch API का उपयोग करें। API कुंजी को ब्राउज़र-साइड JavaScript में उजागर न करें।
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
requests पैकेज स्पष्ट टाइमआउट और स्टेटस हैंडलिंग वाला संक्षिप्त क्लाइंट उपलब्ध कराता है। इसे 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+
प्रमाणित अनुरोध के लिए Java का मानक HttpClient पर्याप्त है।
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+)
Bearer ऑथराइज़ेशन हेडर और एप्लिकेशन-स्तरीय टाइमआउट के साथ HttpClient का उपयोग करें।
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+
मानक net/http क्लाइंट का उपयोग करें और JSON रिस्पॉन्स को सामान्य स्ट्रक्चर या अपने प्रकारों में डीकोड करें।
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+
Ruby की मानक लाइब्रेरी अतिरिक्त HTTP पैकेज के बिना अनुरोध कर सकती है।
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))
प्रमाणीकरण और ट्रांसपोर्ट त्रुटियों को संभालें
सफलता वाले payload को डीकोड करने से पहले HTTP स्टेटस जाँचें। त्रुटि वाले रिस्पॉन्स में मशीन-पठनीय error.code के साथ एक स्थिर JSON स्ट्रक्चर होता है।
401 missing_token: Authorization हेडर मौजूद नहीं है।401 invalid_token: कुंजी अमान्य, रद्द या बदली जा चुकी है।403 site_not_authorized: कुंजी अनुरोधित ट्रैकर को एक्सेस नहीं कर सकती।429 rate_limit_exceeded: दोबारा प्रयास करने से पहलेRetry-Afterअंतराल तक प्रतीक्षा करें।503: अस्थायी बैकएंड विफलताओं के लिए सीमित एक्सपोनेंशियल बैकऑफ़ के साथ दोबारा प्रयास करें।
{
"error": {
"code": "invalid_token",
"message": "Bearer token is invalid or revoked."
}
}
Tracker-विशिष्ट एंडपॉइंट का उपयोग करें
current_tracker से trackers[].tracker या /api/me का मान पढ़ें, फिर उस ट्रैकर ID को site क्वेरी पैरामीटर के रूप में भेजें।
GET https://api.nowmetrix.com/v1/realtime?site=TRACKER_ID
Authorization: Bearer nm_YOUR_KEY
Accept: application/json