Skip to main content

Integrations: Webhooks

Documentation for the POST webhooks Integration (Last Updated Feb. 2nd, 2024)

Getting Started​

  • Create an automation with "webhook" as a trigger
  • Be sure to copy your API key and Private key into the application you wish to use the API with before closing the modal
  • In your application, create a POST HTTP request to https://govee.tinkertechlab.com/api/v1/webhook/api with the following parameters:
  • api_key (Your API Key beings with "TTL-")
  • public_key (Your private key is provided in the Trigger setup modal with your API key)

Postman​

Confused? Take a look at this example on postman.

Examples​

Be sure to insert your full API key, and Public key! Remember to use the API key provided when you setup the trigger, don't use your GOVEE API key

cURL​

curl --location 'https://govee.tinkertechlab.com/api/v1/webhook/api' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'api_key=TTL-' \
--data-urlencode 'public_key='

PHP's cURL Library​

<?php
// PHP cURL Library

$api_key = "TTL-"; // Replace with your TTL API key
$public_key = ""; // Replace with your public key

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://govee.tinkertechlab.com/api/v1/webhook/api',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => 'api_key='.$api_key.'&public_key='.$public_key,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/x-www-form-urlencoded'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

PHP's Guzzle Library​

<?php
// PHP Guzzle Library

$api_key = "TTL-"; // Replace with your TTL API key
$public_key = ""; // Replace with your public key

$client = new Client();
$headers = [
'Content-Type' => 'application/x-www-form-urlencoded'
];
$options = [
'form_params' => [
'api_key' => $api_key,
'public_key' => $public_key
]];
$request = new Request('POST', 'https://govee.tinkertechlab.com/api/v1/webhook/api', $headers);
$res = $client->sendAsync($request, $options)->wait();
echo $res->getBody();

Python's HTTP.Client Library​

# Python http.client Library

import http.client

api_key = "TTL-" # Replace with your TTL API key
public_key = "" # Replace with your public key

conn = http.client.HTTPSConnection("govee.tinkertechlab.com")

payload = f'api_key={api_key}&public_key={public_key}'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}

conn.request("POST", "/api/v1/webhook/api", payload, headers)
res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

Python's requests Library​

# Python requests Library

import requests

api_key = "TTL-" # Replace with your TTL API key
public_key = "" # Replace with your public key

url = "https://govee.tinkertechlab.com/api/v1/webhook/api"

payload = f'api_key={api_key}&public_key={public_key}'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}

response = requests.post(url, headers=headers, data=payload)

print(response.text)

C#'s HTTPClient​

// C# HTTPClient

var apiKey = "TTL-"; // Replace with your TTL API key
var publicKey = ""; // Replace with your public key

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://govee.tinkertechlab.com/api/v1/webhook/api");

var collection = new List<KeyValuePair<string, string>>();
collection.Add(new KeyValuePair<string, string>("api_key", apiKey));
collection.Add(new KeyValuePair<string, string>("public_key", publicKey));

var content = new FormUrlEncodedContent(collection);
request.Content = content;

var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();

Console.WriteLine(await response.Content.ReadAsStringAsync());

Swift's URLSession​

// Swift URLSession

import Foundation

let apiKey = "TTL-" // Replace with your TTL API key
let publicKey = "" // Replace with your public key

let parameters = "api_key=\(apiKey)&public_key=\(publicKey)"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "https://govee.tinkertechlab.com/api/v1/webhook/api")!, timeoutInterval: Double.infinity)
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}

task.resume()