curl --request GET \
--url https://take.app/api/v2/products/{product_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://take.app/api/v2/products/{product_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://take.app/api/v2/products/{product_id}', 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://take.app/api/v2/products/{product_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://take.app/api/v2/products/{product_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://take.app/api/v2/products/{product_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://take.app/api/v2/products/{product_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"object": "product",
"reference_id": "<string>",
"name": "<string>",
"description": "<string>",
"sku": "<string>",
"status": "VISIBLE",
"type": "PHYSICAL",
"price": 123,
"original_price": 123,
"cost_enabled": true,
"cost": 123,
"unit_enabled": true,
"unit": "QTY",
"unit_value": 123,
"weight": 123,
"tax_override": true,
"tax_rate": 123,
"tags": [
"<string>"
],
"links": [
"<string>"
],
"category_ids": [
"<string>"
],
"daily_limit": 123,
"cart_limit": 123,
"cart_minimum": 123,
"inventory_enabled": true,
"soldout": true,
"inventory": {
"item_id": "<string>",
"object": "inventory_item",
"item_type": "product",
"item_name": "<string>",
"product_id": "<string>",
"variant_id": "<string>",
"sku": "<string>",
"quantity": 123,
"price": 123,
"original_price": 123,
"cost": 123,
"cost_enabled": true,
"updated_at": "2023-11-07T05:31:56Z"
},
"variants": [
{
"id": "<string>",
"object": "variant",
"product_id": "<string>",
"name": "<string>",
"sku": "<string>",
"description": "<string>",
"price": 123,
"original_price": 123,
"cost": 123,
"weight": 123,
"inventory": {
"item_id": "<string>",
"object": "inventory_item",
"item_type": "product",
"item_name": "<string>",
"product_id": "<string>",
"variant_id": "<string>",
"sku": "<string>",
"quantity": 123,
"price": 123,
"original_price": 123,
"cost": 123,
"cost_enabled": true,
"updated_at": "2023-11-07T05:31:56Z"
}
}
],
"options": [
{
"id": "<string>",
"object": "product_option",
"type": "OPTION_TEXT",
"text": "<string>",
"required": true,
"settings": "<unknown>"
}
],
"images": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}Get product
curl --request GET \
--url https://take.app/api/v2/products/{product_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://take.app/api/v2/products/{product_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://take.app/api/v2/products/{product_id}', 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://take.app/api/v2/products/{product_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://take.app/api/v2/products/{product_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://take.app/api/v2/products/{product_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://take.app/api/v2/products/{product_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"object": "product",
"reference_id": "<string>",
"name": "<string>",
"description": "<string>",
"sku": "<string>",
"status": "VISIBLE",
"type": "PHYSICAL",
"price": 123,
"original_price": 123,
"cost_enabled": true,
"cost": 123,
"unit_enabled": true,
"unit": "QTY",
"unit_value": 123,
"weight": 123,
"tax_override": true,
"tax_rate": 123,
"tags": [
"<string>"
],
"links": [
"<string>"
],
"category_ids": [
"<string>"
],
"daily_limit": 123,
"cart_limit": 123,
"cart_minimum": 123,
"inventory_enabled": true,
"soldout": true,
"inventory": {
"item_id": "<string>",
"object": "inventory_item",
"item_type": "product",
"item_name": "<string>",
"product_id": "<string>",
"variant_id": "<string>",
"sku": "<string>",
"quantity": 123,
"price": 123,
"original_price": 123,
"cost": 123,
"cost_enabled": true,
"updated_at": "2023-11-07T05:31:56Z"
},
"variants": [
{
"id": "<string>",
"object": "variant",
"product_id": "<string>",
"name": "<string>",
"sku": "<string>",
"description": "<string>",
"price": 123,
"original_price": 123,
"cost": 123,
"weight": 123,
"inventory": {
"item_id": "<string>",
"object": "inventory_item",
"item_type": "product",
"item_name": "<string>",
"product_id": "<string>",
"variant_id": "<string>",
"sku": "<string>",
"quantity": 123,
"price": 123,
"original_price": 123,
"cost": 123,
"cost_enabled": true,
"updated_at": "2023-11-07T05:31:56Z"
}
}
],
"options": [
{
"id": "<string>",
"object": "product_option",
"type": "OPTION_TEXT",
"text": "<string>",
"required": true,
"settings": "<unknown>"
}
],
"images": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}Authorizations
Merchant API V2 token. Pass as Authorization: Bearer <token>.
Path Parameters
Response
Product
product Supports a small Markdown subset: **bold**, _italic_, ~strike~, [text](url), , and bare http(s) URLs, which become links. Line breaks are kept. Headings, lists, tables and HTML are not parsed and render as literal text.
VISIBLE, HIDDEN PHYSICAL, DIGITAL, SUBSCRIPTION, BOOKING, OTHERS Integer amount in the smallest unit of the store currency (e.g. cents).
Compare-at price, struck through next to the price to show a markdown. Defaults to 0, which shows no strike-through. Set it above price to advertise a discount — the storefront does not check that it is higher, so a value at or below price reads as a mistake to shoppers.
Integer amount in the smallest unit of the store currency (e.g. cents).
QTY, KG, G, ML, L, PCS, PAX, PACK, PERSON, ROOM, LBS, HOUR, BOX Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Product images, in display order. Every image is copied onto Take App storage, so send a source URL once and use the URLs returned here from then on — a URL that is already ours is kept as-is, any other URL is fetched and stored again. Omitting the field leaves the images alone; sending an empty array removes them all.