Use this endpoint to send data to one or more variables of a Device
To send data to one or more variables of a Device please make a POST request to the following URL:
| HTTP Method | URL |
|---|---|
| POST | https://industrial.api.ubidots.com/api/v1.6/devices/<device_label>/ |
Where <device_label> is a string with the label of the Device to which data will be sent to.
Headers
The "X-Auth-Token" and "Content-Type" headers are required to your request:
| Header | Value | Required? | Description |
|---|---|---|---|
X-Auth-Token | Token | Yes | Authentication Token of your account. |
Content-Type | application/json | Yes | The type of data of the body. |
Body
An object containing keys as variable labels and Dots as values. The following are all valid payloads:
{
"temperature": 10,
"humidity": 90,
"pressure": 78
}{
"temperature": {
"value": 10,
"timestamp": 1634311791000,
"context": {
"status": "cold"
}
},
"humidity": {
"value": 90,
"timestamp": 1634311791000,
"context": {
"status": "High humidity"
}
},
"pressure": {
"value": 78,
"timestamp": 1634311791000,
"context": {
"status": "Normal"
}
}
}{
"position": {
"value": 1,
"context": {
"lat": "6.5423",
"lng": "-70.5783"
}
}
}{
"temperature": [{
"value": 10,
"timestamp": 1702933911000
},
{
"value": 12,
"timestamp": 1702933912000
}]
}For a detailed explanation of a Dots' keys, please see here.
timestampandcontextThe
timestampandcontextparameters are optional.
Maximum lengthThe maximum character length for the body is 10kb
Query Parameters
You may add optional parameters to the URL of your request:
Parameter | Type | Description |
|---|---|---|
timestamp | Integer |
|
token | String |
|
type | String |
|
status | Boolean |
|
Sending location data
You may use the context key to send location data. Ubidots will automatically recognize location data when using these variable labels:
positionlocationgps
There are 3 ways to send location data:
{
"position": {
"value": 1,
"context": {
"lat": "6.5423",
"lng": "-70.5783"
}
}
}// Since the "value" of a dot is mandatory, this option will set the variable value to "1".
{
"position": {
"lat": "6.5423",
"lng": "-70.5783"
}
}// Since the "value" of a dot is mandatory, this option will set the variable value to "1".
{
"position": {
"latitude": "6.5423",
"longitude": "-70.5783"
}
}
Location modesThe location of a device can be determined by a variable or a fixed property. Please see here to learn more about Device Location modes.
Examples
Send a value to a single variable:
Update a variable and let Ubidots apply a timestamp equal to the reception time:
$ curl -X POST 'https://industrial.api.ubidots.com/api/v1.6/devices/<device_label>/' \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: oaXBo6ODhIjPsusNRPUGIK4d72bc73' \
-d '{"temperature": 10}'{
"temperature":[{"status_code":201}]
}{
"code":400001,
"message":"The payload sent is not a valid json document."
}{
"code":401001,
"message":"Authentication credentials were not provided."
}Send a value to multiple variables:
Update two variables and let Ubidots apply a timestamp equal to the reception time:
$ curl -X POST 'https://industrial.api.ubidots.com/api/v1.6/devices/<device_label>/' \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: oaXBo6ODhIjPsusNRPUGIK4d72bc73' \
-d '{"temperature": 10, "humidty": 90}'{
"temperature":[{"status_code":201}],
"humidity":[{"status_code":201}]
}{
"code":400001,
"message":"The payload sent is not a valid json document."
}{
"code":401001,
"message":"Authentication credentials were not provided."
}Send a Dot to multiple variables:
Update multiple variables, including context and timestamp:
$ curl -X POST 'https://industrial.api.ubidots.com/api/v1.6/devices/<device_label>/' \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: oaXBo6ODhIjPsusNRPUGIK4d72bc73' \
-d '{
"temperature": {
"value": 10,
"timestamp": 1634311791000,
"context": {
"status": "cold"
}
},
"humidity": {
"value": 90,
"timestamp": 1634311791000,
"context": {
"status": "High humidity"
}
},
"pressure": {
"value": 78,
"timestamp": 1634311791000,
"context": {
"status": "Normal"
}
}
}'{
"temperature":[{"status_code":201}],
"humidity":[{"status_code":201}],
"pressure":[{"status_code":201}]
}{
"code":400001,
"message":"The payload sent is not a valid json document."
}{
"code":401001,
"message":"Authentication credentials were not provided."
}Send location data:
Update a position variable so that the Device displays its location:
curl -X POST 'https://industrial.api.ubidots.com/api/v1.6/devices/<device_label>/' \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: oaXBo6ODhIjPsusNRPUGIK4d72bc73' \
-d '{"position":{"lat":6.2442, "lng":-75.5812}}'{
"position":[{"status_code":201}],
}{
"code":400001,
"message":"The payload sent is not a valid json document."
}{
"code":401001,
"message":"Authentication credentials were not provided."
}Send data with global timestamp:
Update multiples variables with a global timestamp sent as a query parameter. Variables with an individual timestamp will override the global timestamp:
$ curl -X POST 'https://industrial.api.ubidots.com/api/v1.6/devices/<device_label>/?timestamp=1634311791000' \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: oaXBo6ODhIjPsusNRPUGIK4d72bc73' \
-d '{
"temperature": {
"value": 10,
"context": {
"status": "cold"
}
},
"humidity": {
"value": 90,
"context": {
"status": "High humidity"
}
},
"pressure": {
"value": 78,
"timestamp": 1634336087000,
"context": {
"status": "Normal"
}
}
}'Send historical data to a Device (data logger):
Send multiple Dots per variable. Each Dot requires its own timestamp
$ curl -X POST 'https://industrial.api.ubidots.com/api/v1.6/devices/<device_label>/' \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: oaXBo6ODhIjPsusNRPUGIK4d72bc73' \
-d '{
"temperature": [
{"value": 10,"timestamp": 1634336087000},
{"value": 11,"timestamp": 1634336088765}
],
"humidity": [
{"value": 90,"timestamp": 1634336087000},
{"value": 95,"timestamp": 1634336088765}
],
"pressure": [
{"value": 78,"timestamp": 1634336087000},
{"value": 82,"timestamp": 1634336088765}
]
}'