curl --request POST \
--url https://api.serial.io/process-data \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"identifier": "PARENT-SERIAL-NUMBER-123",
"station_id": "65bf308d-c669-4504-b071-b9b296dc7030",
"process_id": "db3dscb24-bs4a-489b-9697-dds457dea7b4",
"is_pass": true,
"break_prior_links": false,
"links": {
"identifier": "CHILD-SERIAL-NUMBER-123"
},
"parameters": {
"key_name": "Battery Voltage",
"data_type": "NUMBER",
"value": 12.3,
"usl": 13.4,
"lsl": 9.8,
"unit": "V"
},
"images": {
"key_name": "IV Curve Image",
"file_name": "IVCurve123.png"
},
"files": {
"key_name": "IV Curve Raw",
"file_name": "IVCurve.csv"
}
}
'import requests
url = "https://api.serial.io/process-data"
payload = {
"identifier": "PARENT-SERIAL-NUMBER-123",
"station_id": "65bf308d-c669-4504-b071-b9b296dc7030",
"process_id": "db3dscb24-bs4a-489b-9697-dds457dea7b4",
"is_pass": True,
"break_prior_links": False,
"links": { "identifier": "CHILD-SERIAL-NUMBER-123" },
"parameters": {
"key_name": "Battery Voltage",
"data_type": "NUMBER",
"value": 12.3,
"usl": 13.4,
"lsl": 9.8,
"unit": "V"
},
"images": {
"key_name": "IV Curve Image",
"file_name": "IVCurve123.png"
},
"files": {
"key_name": "IV Curve Raw",
"file_name": "IVCurve.csv"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identifier: 'PARENT-SERIAL-NUMBER-123',
station_id: '65bf308d-c669-4504-b071-b9b296dc7030',
process_id: 'db3dscb24-bs4a-489b-9697-dds457dea7b4',
is_pass: true,
break_prior_links: false,
links: {identifier: 'CHILD-SERIAL-NUMBER-123'},
parameters: {
key_name: 'Battery Voltage',
data_type: 'NUMBER',
value: 12.3,
usl: 13.4,
lsl: 9.8,
unit: 'V'
},
images: {key_name: 'IV Curve Image', file_name: 'IVCurve123.png'},
files: {key_name: 'IV Curve Raw', file_name: 'IVCurve.csv'}
})
};
fetch('https://api.serial.io/process-data', 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.serial.io/process-data",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identifier' => 'PARENT-SERIAL-NUMBER-123',
'station_id' => '65bf308d-c669-4504-b071-b9b296dc7030',
'process_id' => 'db3dscb24-bs4a-489b-9697-dds457dea7b4',
'is_pass' => true,
'break_prior_links' => false,
'links' => [
'identifier' => 'CHILD-SERIAL-NUMBER-123'
],
'parameters' => [
'key_name' => 'Battery Voltage',
'data_type' => 'NUMBER',
'value' => 12.3,
'usl' => 13.4,
'lsl' => 9.8,
'unit' => 'V'
],
'images' => [
'key_name' => 'IV Curve Image',
'file_name' => 'IVCurve123.png'
],
'files' => [
'key_name' => 'IV Curve Raw',
'file_name' => 'IVCurve.csv'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.serial.io/process-data"
payload := strings.NewReader("{\n \"identifier\": \"PARENT-SERIAL-NUMBER-123\",\n \"station_id\": \"65bf308d-c669-4504-b071-b9b296dc7030\",\n \"process_id\": \"db3dscb24-bs4a-489b-9697-dds457dea7b4\",\n \"is_pass\": true,\n \"break_prior_links\": false,\n \"links\": {\n \"identifier\": \"CHILD-SERIAL-NUMBER-123\"\n },\n \"parameters\": {\n \"key_name\": \"Battery Voltage\",\n \"data_type\": \"NUMBER\",\n \"value\": 12.3,\n \"usl\": 13.4,\n \"lsl\": 9.8,\n \"unit\": \"V\"\n },\n \"images\": {\n \"key_name\": \"IV Curve Image\",\n \"file_name\": \"IVCurve123.png\"\n },\n \"files\": {\n \"key_name\": \"IV Curve Raw\",\n \"file_name\": \"IVCurve.csv\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.serial.io/process-data")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"identifier\": \"PARENT-SERIAL-NUMBER-123\",\n \"station_id\": \"65bf308d-c669-4504-b071-b9b296dc7030\",\n \"process_id\": \"db3dscb24-bs4a-489b-9697-dds457dea7b4\",\n \"is_pass\": true,\n \"break_prior_links\": false,\n \"links\": {\n \"identifier\": \"CHILD-SERIAL-NUMBER-123\"\n },\n \"parameters\": {\n \"key_name\": \"Battery Voltage\",\n \"data_type\": \"NUMBER\",\n \"value\": 12.3,\n \"usl\": 13.4,\n \"lsl\": 9.8,\n \"unit\": \"V\"\n },\n \"images\": {\n \"key_name\": \"IV Curve Image\",\n \"file_name\": \"IVCurve123.png\"\n },\n \"files\": {\n \"key_name\": \"IV Curve Raw\",\n \"file_name\": \"IVCurve.csv\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.serial.io/process-data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identifier\": \"PARENT-SERIAL-NUMBER-123\",\n \"station_id\": \"65bf308d-c669-4504-b071-b9b296dc7030\",\n \"process_id\": \"db3dscb24-bs4a-489b-9697-dds457dea7b4\",\n \"is_pass\": true,\n \"break_prior_links\": false,\n \"links\": {\n \"identifier\": \"CHILD-SERIAL-NUMBER-123\"\n },\n \"parameters\": {\n \"key_name\": \"Battery Voltage\",\n \"data_type\": \"NUMBER\",\n \"value\": 12.3,\n \"usl\": 13.4,\n \"lsl\": 9.8,\n \"unit\": \"V\"\n },\n \"images\": {\n \"key_name\": \"IV Curve Image\",\n \"file_name\": \"IVCurve123.png\"\n },\n \"files\": {\n \"key_name\": \"IV Curve Raw\",\n \"file_name\": \"IVCurve.csv\"\n }\n}"
response = http.request(request)
puts response.read_bodyThis response has no body data.Upload Process Data
This endpoint is responsible for uploading process data to the server. It accepts multipart form data as input, which includes a JSON payload named ‘serial_payload’ and optionally images and files. The ‘serial_payload’ consists of information about the identifier, station ID, links, parameters, images, files, and the pass/fail status of the process. Images and files are attached to the payload with their respective file names and binary data. The server’s response is a ‘requests.Response’ object.
curl --request POST \
--url https://api.serial.io/process-data \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"identifier": "PARENT-SERIAL-NUMBER-123",
"station_id": "65bf308d-c669-4504-b071-b9b296dc7030",
"process_id": "db3dscb24-bs4a-489b-9697-dds457dea7b4",
"is_pass": true,
"break_prior_links": false,
"links": {
"identifier": "CHILD-SERIAL-NUMBER-123"
},
"parameters": {
"key_name": "Battery Voltage",
"data_type": "NUMBER",
"value": 12.3,
"usl": 13.4,
"lsl": 9.8,
"unit": "V"
},
"images": {
"key_name": "IV Curve Image",
"file_name": "IVCurve123.png"
},
"files": {
"key_name": "IV Curve Raw",
"file_name": "IVCurve.csv"
}
}
'import requests
url = "https://api.serial.io/process-data"
payload = {
"identifier": "PARENT-SERIAL-NUMBER-123",
"station_id": "65bf308d-c669-4504-b071-b9b296dc7030",
"process_id": "db3dscb24-bs4a-489b-9697-dds457dea7b4",
"is_pass": True,
"break_prior_links": False,
"links": { "identifier": "CHILD-SERIAL-NUMBER-123" },
"parameters": {
"key_name": "Battery Voltage",
"data_type": "NUMBER",
"value": 12.3,
"usl": 13.4,
"lsl": 9.8,
"unit": "V"
},
"images": {
"key_name": "IV Curve Image",
"file_name": "IVCurve123.png"
},
"files": {
"key_name": "IV Curve Raw",
"file_name": "IVCurve.csv"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identifier: 'PARENT-SERIAL-NUMBER-123',
station_id: '65bf308d-c669-4504-b071-b9b296dc7030',
process_id: 'db3dscb24-bs4a-489b-9697-dds457dea7b4',
is_pass: true,
break_prior_links: false,
links: {identifier: 'CHILD-SERIAL-NUMBER-123'},
parameters: {
key_name: 'Battery Voltage',
data_type: 'NUMBER',
value: 12.3,
usl: 13.4,
lsl: 9.8,
unit: 'V'
},
images: {key_name: 'IV Curve Image', file_name: 'IVCurve123.png'},
files: {key_name: 'IV Curve Raw', file_name: 'IVCurve.csv'}
})
};
fetch('https://api.serial.io/process-data', 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.serial.io/process-data",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identifier' => 'PARENT-SERIAL-NUMBER-123',
'station_id' => '65bf308d-c669-4504-b071-b9b296dc7030',
'process_id' => 'db3dscb24-bs4a-489b-9697-dds457dea7b4',
'is_pass' => true,
'break_prior_links' => false,
'links' => [
'identifier' => 'CHILD-SERIAL-NUMBER-123'
],
'parameters' => [
'key_name' => 'Battery Voltage',
'data_type' => 'NUMBER',
'value' => 12.3,
'usl' => 13.4,
'lsl' => 9.8,
'unit' => 'V'
],
'images' => [
'key_name' => 'IV Curve Image',
'file_name' => 'IVCurve123.png'
],
'files' => [
'key_name' => 'IV Curve Raw',
'file_name' => 'IVCurve.csv'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.serial.io/process-data"
payload := strings.NewReader("{\n \"identifier\": \"PARENT-SERIAL-NUMBER-123\",\n \"station_id\": \"65bf308d-c669-4504-b071-b9b296dc7030\",\n \"process_id\": \"db3dscb24-bs4a-489b-9697-dds457dea7b4\",\n \"is_pass\": true,\n \"break_prior_links\": false,\n \"links\": {\n \"identifier\": \"CHILD-SERIAL-NUMBER-123\"\n },\n \"parameters\": {\n \"key_name\": \"Battery Voltage\",\n \"data_type\": \"NUMBER\",\n \"value\": 12.3,\n \"usl\": 13.4,\n \"lsl\": 9.8,\n \"unit\": \"V\"\n },\n \"images\": {\n \"key_name\": \"IV Curve Image\",\n \"file_name\": \"IVCurve123.png\"\n },\n \"files\": {\n \"key_name\": \"IV Curve Raw\",\n \"file_name\": \"IVCurve.csv\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.serial.io/process-data")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"identifier\": \"PARENT-SERIAL-NUMBER-123\",\n \"station_id\": \"65bf308d-c669-4504-b071-b9b296dc7030\",\n \"process_id\": \"db3dscb24-bs4a-489b-9697-dds457dea7b4\",\n \"is_pass\": true,\n \"break_prior_links\": false,\n \"links\": {\n \"identifier\": \"CHILD-SERIAL-NUMBER-123\"\n },\n \"parameters\": {\n \"key_name\": \"Battery Voltage\",\n \"data_type\": \"NUMBER\",\n \"value\": 12.3,\n \"usl\": 13.4,\n \"lsl\": 9.8,\n \"unit\": \"V\"\n },\n \"images\": {\n \"key_name\": \"IV Curve Image\",\n \"file_name\": \"IVCurve123.png\"\n },\n \"files\": {\n \"key_name\": \"IV Curve Raw\",\n \"file_name\": \"IVCurve.csv\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.serial.io/process-data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identifier\": \"PARENT-SERIAL-NUMBER-123\",\n \"station_id\": \"65bf308d-c669-4504-b071-b9b296dc7030\",\n \"process_id\": \"db3dscb24-bs4a-489b-9697-dds457dea7b4\",\n \"is_pass\": true,\n \"break_prior_links\": false,\n \"links\": {\n \"identifier\": \"CHILD-SERIAL-NUMBER-123\"\n },\n \"parameters\": {\n \"key_name\": \"Battery Voltage\",\n \"data_type\": \"NUMBER\",\n \"value\": 12.3,\n \"usl\": 13.4,\n \"lsl\": 9.8,\n \"unit\": \"V\"\n },\n \"images\": {\n \"key_name\": \"IV Curve Image\",\n \"file_name\": \"IVCurve123.png\"\n },\n \"files\": {\n \"key_name\": \"IV Curve Raw\",\n \"file_name\": \"IVCurve.csv\"\n }\n}"
response = http.request(request)
puts response.read_bodyThis response has no body data.Authorizations
API Key or Token formatted as Bearer <YOUR_KEY_OR_TOKEN>
Body
This endpoint accepts multipart form data as input, which includes a JSON payload named 'serial_payload' and optionally images and files. Images and files are attached to the payload with their respective file names and binary data. The example body shown here is that only of the 'serial_payload'. The file binaries would need to be attached sperately.
A serial number or lot code
A process ID generated through the Serial app
A station ID generated through the Serial app
Optional override to specify whether the process passed or failed
Option to remove prior children that were linked to the parent via this process
Array of linked serial numbers or lot codes
Show child attributes
Show child attributes
Coming soon...
Array of parametric data to be uploaded
Show child attributes
Show child attributes
Array or images that will be uploaded in conjuction with the serial_payload
Show child attributes
Show child attributes
Array or files that will be uploaded in conjuction with the serial_payload
Show child attributes
Show child attributes

