cURL
curl "https://api.ornnai.com/api/memory/DDR4%2016Gb%20(2Gx8)%203200/history?limit=5" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
resp = requests.get(
"https://api.ornnai.com/api/memory/DDR4 16Gb (2Gx8) 3200/history",
params={"limit": 5},
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
const type = encodeURIComponent("DDR4 16Gb (2Gx8) 3200");
const res = await fetch(
`https://api.ornnai.com/api/memory/${type}/history?limit=5`,
{ headers: { Authorization: "Bearer YOUR_API_KEY" } },
);
const data = await res.json();
<?php
$type = rawurlencode("DDR4 16Gb (2Gx8) 3200");
$url = "https://api.ornnai.com/api/memory/" . $type . "/history?limit=5";
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
package main
import (
"io"
"net/http"
"net/url"
)
func main() {
endpoint := "https://api.ornnai.com/api/memory/" + url.PathEscape("DDR4 16Gb (2Gx8) 3200") + "/history?limit=5"
req, _ := http.NewRequest("GET", endpoint, nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
_ = body
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(
URI.create("https://api.ornnai.com/api/memory/DDR4%2016Gb%20(2Gx8)%203200/history?limit=5"))
.header("Authorization", "Bearer YOUR_API_KEY")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
require "net/http"
require "json"
uri = URI("https://api.ornnai.com/api/memory/DDR4%2016Gb%20(2Gx8)%203200/history?limit=5")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
{
"success": true,
"memoryType": "DDR4 16Gb (2Gx8) 3200",
"count": 5,
"data": [
{
"date": "2026-01-01T00:00:00.000Z",
"memoryType": "DDR4 16Gb (2Gx8) 3200",
"category": "dram",
"price": 40,
"weeklyHigh": 50,
"weeklyLow": 30,
"changePct": 0,
"sourceUpdatedAt": "2026-01-01T00:00:00.000Z",
"timestamp": "2026-01-01T00:00:00.000Z"
}
]
}{
"error": "Unauthorized",
"message": "API key required. Use Authorization: Bearer YOUR_API_KEY"
}{
"error": "No data available",
"message": "No daily index data found for H100 SXM"
}Get memory price history
GET
/
api
/
memory
/
{memoryType}
/
history
cURL
curl "https://api.ornnai.com/api/memory/DDR4%2016Gb%20(2Gx8)%203200/history?limit=5" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
resp = requests.get(
"https://api.ornnai.com/api/memory/DDR4 16Gb (2Gx8) 3200/history",
params={"limit": 5},
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
const type = encodeURIComponent("DDR4 16Gb (2Gx8) 3200");
const res = await fetch(
`https://api.ornnai.com/api/memory/${type}/history?limit=5`,
{ headers: { Authorization: "Bearer YOUR_API_KEY" } },
);
const data = await res.json();
<?php
$type = rawurlencode("DDR4 16Gb (2Gx8) 3200");
$url = "https://api.ornnai.com/api/memory/" . $type . "/history?limit=5";
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
package main
import (
"io"
"net/http"
"net/url"
)
func main() {
endpoint := "https://api.ornnai.com/api/memory/" + url.PathEscape("DDR4 16Gb (2Gx8) 3200") + "/history?limit=5"
req, _ := http.NewRequest("GET", endpoint, nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
_ = body
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(
URI.create("https://api.ornnai.com/api/memory/DDR4%2016Gb%20(2Gx8)%203200/history?limit=5"))
.header("Authorization", "Bearer YOUR_API_KEY")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
require "net/http"
require "json"
uri = URI("https://api.ornnai.com/api/memory/DDR4%2016Gb%20(2Gx8)%203200/history?limit=5")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
{
"success": true,
"memoryType": "DDR4 16Gb (2Gx8) 3200",
"count": 5,
"data": [
{
"date": "2026-01-01T00:00:00.000Z",
"memoryType": "DDR4 16Gb (2Gx8) 3200",
"category": "dram",
"price": 40,
"weeklyHigh": 50,
"weeklyLow": 30,
"changePct": 0,
"sourceUpdatedAt": "2026-01-01T00:00:00.000Z",
"timestamp": "2026-01-01T00:00:00.000Z"
}
]
}{
"error": "Unauthorized",
"message": "API key required. Use Authorization: Bearer YOUR_API_KEY"
}{
"error": "No data available",
"message": "No daily index data found for H100 SXM"
}Overview
Historical spot prices for a single memory type, oldest-first - pair this with/api/memory-types to discover valid memoryType values.Authorizations
API key passed as a Bearer token. Create one in the dashboard.
Path Parameters
A tracked memory type. URL-encode spaces and slashes.
Example:
"DDR4 16Gb (2Gx8) 3200"
Response
Memory price history.
⌘I

