Upload one ECG data frame
const url = 'https://api.cardio.ai/v3/streams/1/frames?timestamp=1';const options = { method: 'POST', headers: {'X-Api-Token': '<X-Api-Token>', 'Content-Type': 'application/octet-stream'}, body: 'binary'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url 'https://api.cardio.ai/v3/streams/1/frames?timestamp=1' \ --header 'Content-Type: application/octet-stream' \ --header 'X-Api-Token: <X-Api-Token>' \ --data binaryAppends a single compressed data frame to an already started ECG stream.
Frames may arrive out of order. The timestamp query parameter, measured in microseconds from stream start, is treated as the primary key. If a frame with the same timestamp already exists, the call returns 409 Conflict.
The frame must use the same frame_format, sample_rate, and lead/channel order that were specified when the stream was started with /v3/streams/start.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Stream identifier.
Query Parameters
Section titled “Query Parameters”Frame start time in microseconds from stream start.
Request Bodyrequired
Section titled “Request Bodyrequired”COMPRESSED_DELTA frame payload.
Responses
Section titled “Responses”Operation completed successfully.
Bad Request - missing or invalid parameters.
Error payload carried by every non-2xx response.
object
Human-readable description of the failure. The wording is not part of the API contract; do not match on it programmatically.
Stable machine-readable failure code in snake_case, e.g. “api_token_missing” or “invalid_task_id”. Omitted for 500 responses.
Examplegenerated
{ "message": "example", "reason": "example"}Unauthorized - missing, expired, or invalid token.
Error payload carried by every non-2xx response.
object
Human-readable description of the failure. The wording is not part of the API contract; do not match on it programmatically.
Stable machine-readable failure code in snake_case, e.g. “api_token_missing” or “invalid_task_id”. Omitted for 500 responses.
Examplegenerated
{ "message": "example", "reason": "example"}Forbidden - the provided token is not authorized to call this endpoint.
Error payload carried by every non-2xx response.
object
Human-readable description of the failure. The wording is not part of the API contract; do not match on it programmatically.
Stable machine-readable failure code in snake_case, e.g. “api_token_missing” or “invalid_task_id”. Omitted for 500 responses.
Examplegenerated
{ "message": "example", "reason": "example"}Not Found - requested resource does not exist or is unavailable.
Error payload carried by every non-2xx response.
object
Human-readable description of the failure. The wording is not part of the API contract; do not match on it programmatically.
Stable machine-readable failure code in snake_case, e.g. “api_token_missing” or “invalid_task_id”. Omitted for 500 responses.
Examplegenerated
{ "message": "example", "reason": "example"}Conflict - current resource state does not allow the operation.
Error payload carried by every non-2xx response.
object
Human-readable description of the failure. The wording is not part of the API contract; do not match on it programmatically.
Stable machine-readable failure code in snake_case, e.g. “api_token_missing” or “invalid_task_id”. Omitted for 500 responses.
Examplegenerated
{ "message": "example", "reason": "example"}Too Many Requests - rate limit exceeded.
Error payload carried by every non-2xx response.
object
Human-readable description of the failure. The wording is not part of the API contract; do not match on it programmatically.
Stable machine-readable failure code in snake_case, e.g. “api_token_missing” or “invalid_task_id”. Omitted for 500 responses.
Examplegenerated
{ "message": "example", "reason": "example"}