curl --request POST \
--url https://api2.rhombussystems.com/api/video/getExactFrameUri \
--header 'Content-Type: application/json' \
--header 'x-auth-apikey: <api-key>' \
--header 'x-auth-scheme: <x-auth-scheme>' \
--data '
{
"cameraUuid": "AAAAAAAAAAAAAAAAAAAAAA.v0",
"timestampMs": 123,
"downscaleFactor": 2,
"jpgQuality": 50,
"permyriadCropHeight": 5000,
"permyriadCropWidth": 5000,
"permyriadCropX": 5000,
"permyriadCropY": 5000
}
'import requests
url = "https://api2.rhombussystems.com/api/video/getExactFrameUri"
payload = {
"cameraUuid": "AAAAAAAAAAAAAAAAAAAAAA.v0",
"timestampMs": 123,
"downscaleFactor": 2,
"jpgQuality": 50,
"permyriadCropHeight": 5000,
"permyriadCropWidth": 5000,
"permyriadCropX": 5000,
"permyriadCropY": 5000
}
headers = {
"x-auth-scheme": "<x-auth-scheme>",
"x-auth-apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-auth-scheme': '<x-auth-scheme>',
'x-auth-apikey': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
cameraUuid: 'AAAAAAAAAAAAAAAAAAAAAA.v0',
timestampMs: 123,
downscaleFactor: 2,
jpgQuality: 50,
permyriadCropHeight: 5000,
permyriadCropWidth: 5000,
permyriadCropX: 5000,
permyriadCropY: 5000
})
};
fetch('https://api2.rhombussystems.com/api/video/getExactFrameUri', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://api2.rhombussystems.com/api/video/getExactFrameUri")
.header("x-auth-scheme", "<x-auth-scheme>")
.header("x-auth-apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cameraUuid\": \"AAAAAAAAAAAAAAAAAAAAAA.v0\",\n \"timestampMs\": 123,\n \"downscaleFactor\": 2,\n \"jpgQuality\": 50,\n \"permyriadCropHeight\": 5000,\n \"permyriadCropWidth\": 5000,\n \"permyriadCropX\": 5000,\n \"permyriadCropY\": 5000\n}")
.asString();{
"error": true,
"errorMsg": "<string>",
"frameUri": "https://example.com/frame/12345.jpg",
"responseMessage": "Frame generated successfully",
"status": "AVAILABLE",
"warningMsg": "<string>"
}Get exact frame URI
Generate URL to get an exact frame with optional crop from a camera. The URL is served by the media relay the camera is connected to right now, so use it promptly. The response always has HTTP status 200; check the status field, and only treat the frame as retrievable when it is AVAILABLE.
curl --request POST \
--url https://api2.rhombussystems.com/api/video/getExactFrameUri \
--header 'Content-Type: application/json' \
--header 'x-auth-apikey: <api-key>' \
--header 'x-auth-scheme: <x-auth-scheme>' \
--data '
{
"cameraUuid": "AAAAAAAAAAAAAAAAAAAAAA.v0",
"timestampMs": 123,
"downscaleFactor": 2,
"jpgQuality": 50,
"permyriadCropHeight": 5000,
"permyriadCropWidth": 5000,
"permyriadCropX": 5000,
"permyriadCropY": 5000
}
'import requests
url = "https://api2.rhombussystems.com/api/video/getExactFrameUri"
payload = {
"cameraUuid": "AAAAAAAAAAAAAAAAAAAAAA.v0",
"timestampMs": 123,
"downscaleFactor": 2,
"jpgQuality": 50,
"permyriadCropHeight": 5000,
"permyriadCropWidth": 5000,
"permyriadCropX": 5000,
"permyriadCropY": 5000
}
headers = {
"x-auth-scheme": "<x-auth-scheme>",
"x-auth-apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-auth-scheme': '<x-auth-scheme>',
'x-auth-apikey': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
cameraUuid: 'AAAAAAAAAAAAAAAAAAAAAA.v0',
timestampMs: 123,
downscaleFactor: 2,
jpgQuality: 50,
permyriadCropHeight: 5000,
permyriadCropWidth: 5000,
permyriadCropX: 5000,
permyriadCropY: 5000
})
};
fetch('https://api2.rhombussystems.com/api/video/getExactFrameUri', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://api2.rhombussystems.com/api/video/getExactFrameUri")
.header("x-auth-scheme", "<x-auth-scheme>")
.header("x-auth-apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cameraUuid\": \"AAAAAAAAAAAAAAAAAAAAAA.v0\",\n \"timestampMs\": 123,\n \"downscaleFactor\": 2,\n \"jpgQuality\": 50,\n \"permyriadCropHeight\": 5000,\n \"permyriadCropWidth\": 5000,\n \"permyriadCropX\": 5000,\n \"permyriadCropY\": 5000\n}")
.asString();{
"error": true,
"errorMsg": "<string>",
"frameUri": "https://example.com/frame/12345.jpg",
"responseMessage": "Frame generated successfully",
"status": "AVAILABLE",
"warningMsg": "<string>"
}Authorizations
Your Rhombus API key. Must be accompanied by the x-auth-scheme header set to api-token (or partner-api-token for partner endpoints).
Headers
Authentication scheme identifier. Use api-token for standard API key authentication, partner-api-token for partner API key authentication. Must be paired with the x-auth-apikey header containing your API key.
api-token, api, partner-api-token, partner-api Body
Request object for generating URL to get an exact frame with optional crop from a camera.
RUUID with optional appended facet information
"AAAAAAAAAAAAAAAAAAAAAA.v0"
Timestamp in epoch milliseconds
Ratio to shrink the image pixels by
x >= 1Adjust quality of image compression
0 <= x <= 100Precise ratio to crop the height by. Capped at 10000, which is 100.00% of the image
0 <= x <= 10000Precise ratio to crop the width by. Capped at 10000, which is 100.00% of the image
0 <= x <= 10000Proportional location to start horizontal crop at. Where 10000 is 100.00% of, or the end of the image
0 <= x <= 10000Proportional location to start vertical crop at. Where 10000 is 100.00% of, or the end of the image
0 <= x <= 10000Response
OK
Response object containing the exact frame URI.
URI to access the exact frame
"https://example.com/frame/12345.jpg"
Response message from the frame generation
"Frame generated successfully"
Outcome of an exact frame request. AVAILABLE is the only value under which a frame URI or frame data is returned; every other value explains why the frame cannot be served.
AVAILABLE, FUTURE_TIMESTAMP, CAMERA_DELETED, CAMERA_STATE_UNAVAILABLE, CAMERA_NOT_CONNECTED, MEDIA_STORAGE_DEVICE_NOT_CONNECTED, NOT_RECORDING_AT_TIMESTAMP, NO_FOOTAGE_AT_TIMESTAMP, MEDIA_ADDRESS_UNAVAILABLE, FRAME_RETRIEVAL_FAILED