Skip to content

fgonza2/meater-cloud-public-rest-api

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 

Repository files navigation

MEATER Cloud REST API

The MEATER Cloud REST API is in BETA.

There may be bugs and changes.

Watch this repository to keep up to date.

Issues, Feedback, Questions

What You'll Need

  • MEATER wireless thermometer. Get yours from the MEATER store.
  • MEATER Cloud account.

API Basics

  • 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 example Accept-Language: fr.
    • The API supports languages supported by the MEATER app.

Status Codes and Errors

The API uses standard HTTP status codes and also includes them in the JSON response in the status and statusCode attributes.

Standard Response

  • 200 OK

Example:

{
    "status": "200 OK",
    "statusCode": 200,
    "data": {},
    "meta": {}
}

Error Response

  • 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"
}

API Endpoints

[POST] /login

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>"
}'

[GET] /devices

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. If ambient is less than internal, ambient will equal internal.
    • cook: Object if cook setup or null
      • id: Unique cook ID.
      • name: Name of selected meat in your language or user given custom name.
      • state: One of Not 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] /devices/{id}

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>'

Issues, Feedback, Questions

Please use issues for feedback, questions and issues.

The MEATER Support Team won't be able to provide support for the API.

Legal

Copyright © 2020 Apption Labs Ltd. Terms of Use.

About

MEATER Cloud REST API documentation.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published