Query measurements with pagination and filtering
curl --request GET \
--url https://api.valar.space/operations/measurements \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.valar.space/operations/measurements"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.valar.space/operations/measurements', 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.valar.space/operations/measurements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.valar.space/operations/measurements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.valar.space/operations/measurements")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.valar.space/operations/measurements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"unresolvedSpacecraftReferences": [
"<string>"
],
"content": [
{
"dopplerMetadata": {
"correctionsApplied": true,
"ionoState": "UNCORRECTED",
"modality": "TWO_WAY",
"receiveBand": "X",
"receiveDelay": 0.0027,
"sigmaDefaulted": false,
"timetagRef": "RECEIVE",
"transmitBand": "S",
"transmitDelay": 0.0015,
"tropoState": "APPLIED",
"turnaroundD": 221,
"turnaroundN": 240
},
"downlinkFrequency": 2200000000,
"epoch": "2025-01-15T12:30:45.123Z",
"file": "measurements_2025-01-15.csv",
"id": "550e8400-e29b-41d4-a716-446655440000",
"measurementType": "RADEC",
"outlier": false,
"referenceFrame": "ICRF",
"sensorId": "SENSOR-123",
"sigmas": [
0.001,
0.001
],
"spacecraftId": "550e8400-e29b-41d4-a716-446655440000",
"values": [
1.5708,
0.7854
]
}
],
"first": true,
"hasNext": true,
"hasPrevious": false,
"last": false,
"page": 0,
"size": 20,
"totalElements": 150,
"totalPages": 8
}{
"timestamp": "2025-01-15T10:30:00.000Z",
"status": 400,
"error": "Bad Request",
"message": "Validation failed",
"path": "/operations/measurements",
"fieldErrors": {
"startDate": "must not be null"
}
}{
"error": "invalid_token",
"error_description": "An error occurred while attempting to decode the Jwt"
}{
"timestamp": "2025-01-15T10:30:00.000Z",
"status": 403,
"error": "ACCESS_ERROR",
"message": "Access denied",
"path": "/operations/measurements"
}{
"timestamp": "2025-01-15T10:30:00.000Z",
"status": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred",
"path": "/operations/measurements"
}Measurements
Query measurements with pagination and filtering
Retrieves paginated measurements with optional filtering by spacecraft, measurement type, date range, and outlier status. Results are sorted by epoch descending by default.
GET
/
operations
/
measurements
Query measurements with pagination and filtering
curl --request GET \
--url https://api.valar.space/operations/measurements \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.valar.space/operations/measurements"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.valar.space/operations/measurements', 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.valar.space/operations/measurements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.valar.space/operations/measurements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.valar.space/operations/measurements")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.valar.space/operations/measurements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"unresolvedSpacecraftReferences": [
"<string>"
],
"content": [
{
"dopplerMetadata": {
"correctionsApplied": true,
"ionoState": "UNCORRECTED",
"modality": "TWO_WAY",
"receiveBand": "X",
"receiveDelay": 0.0027,
"sigmaDefaulted": false,
"timetagRef": "RECEIVE",
"transmitBand": "S",
"transmitDelay": 0.0015,
"tropoState": "APPLIED",
"turnaroundD": 221,
"turnaroundN": 240
},
"downlinkFrequency": 2200000000,
"epoch": "2025-01-15T12:30:45.123Z",
"file": "measurements_2025-01-15.csv",
"id": "550e8400-e29b-41d4-a716-446655440000",
"measurementType": "RADEC",
"outlier": false,
"referenceFrame": "ICRF",
"sensorId": "SENSOR-123",
"sigmas": [
0.001,
0.001
],
"spacecraftId": "550e8400-e29b-41d4-a716-446655440000",
"values": [
1.5708,
0.7854
]
}
],
"first": true,
"hasNext": true,
"hasPrevious": false,
"last": false,
"page": 0,
"size": 20,
"totalElements": 150,
"totalPages": 8
}{
"timestamp": "2025-01-15T10:30:00.000Z",
"status": 400,
"error": "Bad Request",
"message": "Validation failed",
"path": "/operations/measurements",
"fieldErrors": {
"startDate": "must not be null"
}
}{
"error": "invalid_token",
"error_description": "An error occurred while attempting to decode the Jwt"
}{
"timestamp": "2025-01-15T10:30:00.000Z",
"status": 403,
"error": "ACCESS_ERROR",
"message": "Access denied",
"path": "/operations/measurements"
}{
"timestamp": "2025-01-15T10:30:00.000Z",
"status": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred",
"path": "/operations/measurements"
}Query Parameters
Response
Successfully retrieved measurements
Paginated response wrapper that also reports which supplied spacecraft references did not resolve (drop-report)
Spacecraft references the caller supplied that did not resolve (de-duplicated, caller order preserved). Always present; an empty array means every supplied reference resolved.
Spacecraft references the caller supplied that did not resolve (de-duplicated, caller order preserved). Always present; an empty array means every supplied reference resolved.
Was this page helpful?