Skip to main content
GET
/
api
/
public
/
v1
/
studio
/
analytics
/
timeseries
Analytics timeseries [+]
curl --request GET \
  --url https://www.nmcrate.com/api/public/v1/studio/analytics/timeseries
import requests

url = "https://www.nmcrate.com/api/public/v1/studio/analytics/timeseries"

response = requests.get(url)

print(response.text)
const options = {method: 'GET'};

fetch('https://www.nmcrate.com/api/public/v1/studio/analytics/timeseries', 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://www.nmcrate.com/api/public/v1/studio/analytics/timeseries",
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://www.nmcrate.com/api/public/v1/studio/analytics/timeseries"

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://www.nmcrate.com/api/public/v1/studio/analytics/timeseries")
.asString();
require 'uri'
require 'net/http'

url = URI("https://www.nmcrate.com/api/public/v1/studio/analytics/timeseries")

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
Revenue and order counts bucketed over time, for the requested window and the equivalent previous window, so you can draw “current vs previous” comparison charts directly. The bucket size adapts to the window: hourly for day windows, daily for week/month windows, monthly for the year.
Tier: Premium, requires a premium key and an active Branding+ subscription (checked on every request).

Request

curl "https://nmcrate.com/api/public/v1/studio/analytics/timeseries?period=last7d" \
  -H "x-api-key: nmk_studio_..."

Query parameters

ParameterTypeDefaultDescription
periodstringlast7dtoday, yesterday (hourly) · last7d, last30d, last90d, thisWeek, thisMonth (daily) · thisYear (monthly).

Response

{
  "period": "last7d",
  "bucket": "day",
  "currency": "USD",
  "current": {
    "range": { "start": "2026-07-07T00:00:00.000Z", "end": "2026-07-13T23:59:59.999Z" },
    "labels": ["Jul 7", "Jul 8", "Jul 9", "Jul 10", "Jul 11", "Jul 12", "Jul 13"],
    "revenue": [42.5, 0, 118.97, 59.98, 12.99, 84.5, 25.98],
    "orders": [3, 0, 8, 4, 1, 6, 2],
    "totalRevenue": 344.92,
    "totalOrders": 24
  },
  "previous": {
    "range": { "start": "2026-06-30T00:00:00.000Z", "end": "2026-07-06T23:59:59.999Z" },
    "labels": ["Jun 30", "Jul 1", "Jul 2", "Jul 3", "Jul 4", "Jul 5", "Jul 6"],
    "revenue": [0, 29.99, 15.0, 89.97, 0, 44.5, 9.99],
    "orders": [0, 2, 1, 6, 0, 3, 1],
    "totalRevenue": 189.45,
    "totalOrders": 13
  },
  "deltas": {
    "revenue": 82.1,
    "orders": 84.6
  }
}
FieldDescription
buckethour, day, or month, derived from period.
current.labelsHuman-readable x-axis labels; empty buckets are included so the axis is continuous.
current.revenueNet revenue per bucket, numbers in USD dollars.
deltasPercentage change of the window totals vs the previous window.

Errors

HTTPCodeWhen
403PREMIUM_KEY_REQUIREDThe key is basic-tier.
403SUBSCRIPTION_INACTIVEPremium key, but the Branding+ subscription is no longer active.