/api/v1/iq/capturesList#
Responses
200OKapplication/json
array of IqCaptureDRO
idrequiredstring · uuid
created_at requiredstring · date-time
samplesrequiredinteger · int64
sample_rate_hz requiredinteger · int64
center_frequency_hz requiredinteger · int64
pathrequiredstring
size_bytes requiredinteger · int64
statusrequiredstring
tagsrequiredarray of string
annotationsrequiredarray of IqAnnotationDTO
IqAnnotationDTO · 3 fields
offset_samples requiredinteger · int64
labelrequiredstring
notestring · nullable
profile_ref string · nullable
syntheticrequiredboolean
TRUE when the samples were MANUFACTURED rather than captured. Without it a fabricated capture is indistinguishable from a measurement: it carries the true centre frequency and the active profile, and opens in any viewer showing a clean carrier.
Request
curl "http://192.168.2.1:8080/api/v1/iq/captures"import requests
BASE_URL = "http://192.168.2.1:8080"
response = requests.get(f"{BASE_URL}/api/v1/iq/captures")
response.raise_for_status()
print(response.json())let base_url = "http://192.168.2.1:8080";
let response = reqwest::Client::new()
.get(format!("{base_url}/api/v1/iq/captures"))
.send()
.await?
.error_for_status()?;
let body: serde_json::Value = response.json().await?;
println!("{body:#}");Response
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"created_at": "2026-09-29T08:30:00Z",
"samples": 0,
"sample_rate_hz": 0,
"center_frequency_hz": 0,
"path": "string",
"size_bytes": 0,
"status": "string",
"tags": [
"string"
],
"annotations": [
{
"offset_samples": 0,
"label": "string",
"note": "string"
}
],
"profile_ref": "string",
"synthetic": true
}
]/api/v1/iq/capturesStart#
Request body application/jsonrequired
samplesrequiredinteger · int64
sample_rate_hz integer · int64 · nullable
center_frequency_hz integer · int64 · nullable
tagsarray of string
annotationsarray of IqAnnotationDTO
IqAnnotationDTO · 3 fields
offset_samples requiredinteger · int64
labelrequiredstring
notestring · nullable
profile_ref string · nullable
Responses
201Createdapplication/json
idrequiredstring · uuid
created_at requiredstring · date-time
samplesrequiredinteger · int64
sample_rate_hz requiredinteger · int64
center_frequency_hz requiredinteger · int64
pathrequiredstring
size_bytes requiredinteger · int64
statusrequiredstring
tagsrequiredarray of string
annotationsrequiredarray of IqAnnotationDTO
IqAnnotationDTO · 3 fields
offset_samples requiredinteger · int64
labelrequiredstring
notestring · nullable
profile_ref string · nullable
syntheticrequiredboolean
TRUE when the samples were MANUFACTURED rather than captured. Without it a fabricated capture is indistinguishable from a measurement: it carries the true centre frequency and the active profile, and opens in any viewer showing a clean carrier.
Request
curl -X POST "http://192.168.2.1:8080/api/v1/iq/captures" \
-H "Content-Type: application/json" \
-d '{
"samples": 0,
"sample_rate_hz": 0,
"center_frequency_hz": 0,
"tags": [
"string"
],
"annotations": [
{
"offset_samples": 0,
"label": "string",
"note": "string"
}
],
"profile_ref": "string"
}'import requests
BASE_URL = "http://192.168.2.1:8080"
response = requests.post(
f"{BASE_URL}/api/v1/iq/captures",
json={
"samples": 0,
"sample_rate_hz": 0,
"center_frequency_hz": 0,
"tags": [
"string",
],
"annotations": [
{
"offset_samples": 0,
"label": "string",
"note": "string",
},
],
"profile_ref": "string",
},
)
response.raise_for_status()
print(response.json())let base_url = "http://192.168.2.1:8080";
let response = reqwest::Client::new()
.post(format!("{base_url}/api/v1/iq/captures"))
.json(&serde_json::json!({
"samples": 0,
"sample_rate_hz": 0,
"center_frequency_hz": 0,
"tags": [
"string"
],
"annotations": [
{
"offset_samples": 0,
"label": "string",
"note": "string"
}
],
"profile_ref": "string"
}))
.send()
.await?
.error_for_status()?;
let body: serde_json::Value = response.json().await?;
println!("{body:#}");Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"created_at": "2026-09-29T08:30:00Z",
"samples": 0,
"sample_rate_hz": 0,
"center_frequency_hz": 0,
"path": "string",
"size_bytes": 0,
"status": "string",
"tags": [
"string"
],
"annotations": [
{
"offset_samples": 0,
"label": "string",
"note": "string"
}
],
"profile_ref": "string",
"synthetic": true
}/api/v1/iq/captures/{id}Get one#
Path parameters
idrequiredstring · uuid
Capture id
Responses
200OKapplication/json
idrequiredstring · uuid
created_at requiredstring · date-time
samplesrequiredinteger · int64
sample_rate_hz requiredinteger · int64
center_frequency_hz requiredinteger · int64
pathrequiredstring
size_bytes requiredinteger · int64
statusrequiredstring
tagsrequiredarray of string
annotationsrequiredarray of IqAnnotationDTO
IqAnnotationDTO · 3 fields
offset_samples requiredinteger · int64
labelrequiredstring
notestring · nullable
profile_ref string · nullable
syntheticrequiredboolean
TRUE when the samples were MANUFACTURED rather than captured. Without it a fabricated capture is indistinguishable from a measurement: it carries the true centre frequency and the active profile, and opens in any viewer showing a clean carrier.
404not foundapplication/json
Request
curl "http://192.168.2.1:8080/api/v1/iq/captures/3fa85f64-5717-4562-b3fc-2c963f66afa6"import requests
BASE_URL = "http://192.168.2.1:8080"
id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" # Capture id
response = requests.get(f"{BASE_URL}/api/v1/iq/captures/{id}")
response.raise_for_status()
print(response.json())let base_url = "http://192.168.2.1:8080";
let id = "3fa85f64-5717-4562-b3fc-2c963f66afa6"; // Capture id
let response = reqwest::Client::new()
.get(format!("{base_url}/api/v1/iq/captures/{id}"))
.send()
.await?
.error_for_status()?;
let body: serde_json::Value = response.json().await?;
println!("{body:#}");Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"created_at": "2026-09-29T08:30:00Z",
"samples": 0,
"sample_rate_hz": 0,
"center_frequency_hz": 0,
"path": "string",
"size_bytes": 0,
"status": "string",
"tags": [
"string"
],
"annotations": [
{
"offset_samples": 0,
"label": "string",
"note": "string"
}
],
"profile_ref": "string",
"synthetic": true
}{}/api/v1/iq/captures/{id}Delete one#
Path parameters
idrequiredstring · uuid
Capture id
Responses
404not foundapplication/json
Request
curl -X DELETE "http://192.168.2.1:8080/api/v1/iq/captures/3fa85f64-5717-4562-b3fc-2c963f66afa6"import requests
BASE_URL = "http://192.168.2.1:8080"
id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" # Capture id
response = requests.delete(f"{BASE_URL}/api/v1/iq/captures/{id}")
response.raise_for_status()let base_url = "http://192.168.2.1:8080";
let id = "3fa85f64-5717-4562-b3fc-2c963f66afa6"; // Capture id
let response = reqwest::Client::new()
.delete(format!("{base_url}/api/v1/iq/captures/{id}"))
.send()
.await?
.error_for_status()?;Response
{}/api/v1/iq/captures/{id}/downloadDownload#
Path parameters
idrequiredstring · uuid
Capture id
Responses
Request
curl "http://192.168.2.1:8080/api/v1/iq/captures/3fa85f64-5717-4562-b3fc-2c963f66afa6/download" \
-o response.binimport requests
BASE_URL = "http://192.168.2.1:8080"
id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" # Capture id
response = requests.get(f"{BASE_URL}/api/v1/iq/captures/{id}/download")
response.raise_for_status()
data = response.contentlet base_url = "http://192.168.2.1:8080";
let id = "3fa85f64-5717-4562-b3fc-2c963f66afa6"; // Capture id
let response = reqwest::Client::new()
.get(format!("{base_url}/api/v1/iq/captures/{id}/download"))
.send()
.await?
.error_for_status()?;
let bytes = response.bytes().await?;Request
curl "http://192.168.2.1:8080/api/v1/iq/streams"import requests
BASE_URL = "http://192.168.2.1:8080"
response = requests.get(f"{BASE_URL}/api/v1/iq/streams")
response.raise_for_status()let base_url = "http://192.168.2.1:8080";
let response = reqwest::Client::new()
.get(format!("{base_url}/api/v1/iq/streams"))
.send()
.await?
.error_for_status()?;Response
{}