The MEATER Cloud REST API is in BETA.
There may be bugs and changes.
Watch this repository to keep up to date.
- MEATER wireless thermometer. Get yours from the MEATER store.
- MEATER Cloud account.
- Endpoint:
https://public-api.cloud.meater.com/v1
- Rate limit:
- Recommended: 2 requests per 60 seconds.
- Maximum: 60 requests per 60 seconds.
- Slow Down:
- To complement the rate limit, requests are automatically slowed down once 10% of rate limit is reached.
- Delay: Up to
1.0
second per request.
- Authentication:
- JSON Web Tokens (JWT) are used.
- Make a request to the
/login
endpoint to obtain a token. - Authenticated requests are made with the header
Authorization: Bearer <JWT>
- The JWT doesn't expire but may be reset.
- Localisation:
- English (US) is the default.
- Cook names can be translated (unless cook was given a name by the user) using the
Accept-Language
header with the ISO_639-1 language code. For exampleAccept-Language: fr
. - The API supports languages supported by the MEATER app.
The API uses standard HTTP status codes and also includes them in the JSON response in the status
and statusCode
attributes.
- 200 OK
Example:
{
"status": "200 OK",
"statusCode": 200,
"data": {},
"meta": {}
}
- 400 Bad Request
- 401 Unauthorized
- 404 Not Found
- 429 Too Many Requests
- 500 Internal Server Error
Example:
{
"status": "404 Not Found",
"statusCode": 404,
"help": "https://github.com/apption-labs/meater-cloud-public-rest-api"
}
Headers:
Content-Type: application/json
Body:
{
"email": "<MEATER Cloud Email Address>",
"password": "<MEATER Cloud Password>"
}
Response:
{
"status": "OK",
"statusCode": 200,
"data": {
"token": "<JWT>",
"userId": "<User ID>"
},
"meta": {}
}
Example CURL:
curl --location --request POST 'https://public-api.cloud.meater.com/v1/login' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "<MEATER Cloud Email Address>",
"password": "<MEATER Cloud Password>"
}'
Devices (aka MEATER probes) will only be returned after the following criteria is met. There may be a delay between the MEATER Cloud seeing your device and it being returned in this endpoint.
- Device must be seen by the MEATER Cloud. Ensure you've completed a cook while connected to MEATER Cloud.
- The MEATER app or Block must have an active Bluetooth connection with the device.
- The MEATER app or Block must have an active MEATER Cloud connection.
Additional information:
- All temperatures are Celsius.
device
object:id
: Unique device ID.temperature
:internal
: Internal temperature.ambient
: Ambient temperature. Ifambient
is less thaninternal
,ambient
will equalinternal
.
cook
: Object if cook setup ornull
id
: Unique cook ID.name
: Name of selected meat in your language or user given custom name.state
: One ofNot Started
,Configured
,Started
,Ready For Resting
,Resting
,Slightly Underdone
,Finished
,Slightly Overdone
,OVERCOOK!
. Not translated.temperature
:target
: Target temperature.peak
: Peak temperature reached during cook.
time
:elapsed
: Time since the start of cook in seconds. Default:0
.remaining
: Remaining time in seconds. When unknown/calculating default is used. Default:-1
.
updated_at
: Time data was last updated at as a UNIX timestamp.
Headers:
Authorization: Bearer <JWT>
Response:
{
"status": "OK",
"statusCode": 200,
"data": {
"devices": [
{
"id": "<Device ID>",
"temperature": {
"internal": 0,
"ambient": 0,
},
"cook": {
"id": "<Cook ID>",
"name": "<Cook name>",
"state": "<Cook state>",
"temperature": {
"target": 0,
"peak": 0
},
"time": {
"elapsed": 0,
"remaining": 0
}
},
"updated_at": 123456789
},
{
"id": "<Device ID>",
"temperature": {
"internal": 0,
"ambient": 0,
},
"cook": null,
"updated_at": 123456789
},
]
},
"meta": {}
}
Example CURL:
curl --location --request GET 'https://public-api.cloud.meater.com/v1/devices' \
--header 'Authorization: Bearer <JWT>'
Get info for a specific device. Works like /devices
but returns a single object rather than an array.
Headers:
Authorization: Bearer <JWT>
Response:
{
"status": "OK",
"statusCode": 200,
"data": {
"id": "<Device ID>",
"temperature": {
"internal": 0,
"ambient": 0,
},
"cook": null,
"updated_at": 123456789
},
"meta": {}
}
Example CURL:
curl --location --request GET 'https://public-api.cloud.meater.com/v1/devices/<ID>' \
--header 'Authorization: Bearer <JWT>'
Please use issues for feedback, questions and issues.
The MEATER Support Team won't be able to provide support for the API.
Copyright © 2020 Apption Labs Ltd. Terms of Use.