curl -X GET "$API/emm/account/dashboard" \
-H "Authorization: Bearer $TOKEN"import requests
url = "https://api.novig.com/nbx/v2/emm/account/dashboard"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.novig.com/nbx/v2/emm/account/dashboard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.novig.com/nbx/v2/emm/account/dashboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.novig.com/nbx/v2/emm/account/dashboard"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.novig.com/nbx/v2/emm/account/dashboard")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novig.com/nbx/v2/emm/account/dashboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"url": "https://app.hex.tech/embed/<project-id>/?presigned_url_token=eyJhbGciOi...",
"expiresAt": "2026-05-22T15:04:05.000Z"
}Get dashboard URL
Issue a single-use, presigned URL to the EMM analytics dashboard for the authenticated trader.
The returned URL opens the Novig analytics dashboard (P&L, fills, open exposure, etc.) in a browser. The dashboard is scoped to the authenticated trader — you only ever see your own rows.
- Single-use: each URL may be redeemed once. To view refreshed data, call this endpoint again for a new URL.
- Redeem immediately: the URL must be opened within approximately 90 seconds of issuance. Mint a URL at the moment you need it — do not request URLs ahead of time, cache them, or hand them to a background job.
expiresAt: see the field note in the response schema. It does not currently describe the redemption window, so do not use it to schedule refreshes.
Rate limit: 32 requests per second.
curl -X GET "$API/emm/account/dashboard" \
-H "Authorization: Bearer $TOKEN"import requests
url = "https://api.novig.com/nbx/v2/emm/account/dashboard"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.novig.com/nbx/v2/emm/account/dashboard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.novig.com/nbx/v2/emm/account/dashboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.novig.com/nbx/v2/emm/account/dashboard"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.novig.com/nbx/v2/emm/account/dashboard")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novig.com/nbx/v2/emm/account/dashboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"url": "https://app.hex.tech/embed/<project-id>/?presigned_url_token=eyJhbGciOi...",
"expiresAt": "2026-05-22T15:04:05.000Z"
}Response
Dashboard URL issued.
Presigned, single-use URL to the EMM analytics dashboard. Open it in a browser immediately after issuance; request a new URL to view refreshed data.
"https://app.hex.tech/embed/<project-id>/?presigned_url_token=eyJhbGciOi..."
ISO-8601 timestamp returned alongside the URL.
Note: this value currently reports 24 hours after issuance, which does not match the URL's actual redemption window of approximately 90 seconds. Do not use
expiresAtto schedule refreshes — mint a new URL immediately before each use.
"2026-05-22T15:04:05.000Z"